100 likes | 412 Views
10 주 실습강의. - Open API : Naver & Daum OpenAPI - 2008 컴퓨터공학실험 ( I ). Naver OpenAPI. http://openapi.naver.com 검색을 위한 API, 검색 부수기능을 위한 API 와 지도 API 및 데스크톱 위젯 API 를 제공 API Key 를 발급받아 , API 요청시 해당 Key 를 전달 기본 API 는 5,000 건 / 일 , 지도 API 는 50,000 건 / 일로 제한되어 있음
E N D
10주 실습강의 - Open API : Naver & Daum OpenAPI - 2008 컴퓨터공학실험( I )
Naver OpenAPI • http://openapi.naver.com • 검색을 위한 API, 검색 부수기능을 위한 API와 지도 API 및 데스크톱 위젯 API를 제공 • API Key를 발급받아, API 요청시 해당 Key를 전달 • 기본 API는 5,000건/일, 지도 API는 50,000건/일로 제한되어 있음 • 출력 형식은 RSS 2.0 형식으로 통일되어 있음 • API키 이용등록/수정 페이지에서 일반 Key와 지도 API용 Key를 발급받을 수 있음 • API 요청 예제 • http://openapi.naver.com/search?key=test&query=go&display=5&start=1&target=kin&sort=sim
Daum OpenAPI • http://dna.daum.net/apis • 검색 API, 키워드 추천 API, 블로그 글 수정/추가 API, 쇼핑 및 여행 정보 검색 API 제공 • JavaScript 만으로 손쉽게 이용할 수 있도록 AJAX API를 추가로 제공 • 용도에 따른 각각의 API Key를 발급받아서 사용 가능 • 하나의 인증키로 호출할 수 있는 사용가능 회수는 5,000 건/일 로 제한되어있음 • 오픈 API 일반 사용자 등록 – 사용자 인증키 – 발급받기 메뉴를 통해 발급받을 수 있음 • API 요청 예제 • http://apis.daum.net/search/knowledge?q=daum&result=20&pageno=1&sort=accu&range=progress&apikey=xxx
HTTP Cookies • 웹 페이지 서버에서 사용자 하드 디스크로 보내는 아주 작은 텍스트 파일 • 사용자 고유의 것 • 코드로 실행될 수는 없음 • 제공한 서버에서 필요로하는 데이터를 저장하고, 이를 유지할 수 있게 해 줌 • 보통 인증, 세션 유지/추적, 사용자에 특정한 정보를 담는데 사용 • 사용자의 브라우즈 행동을 추적하는데 사용되기도 함 • 쿠키는 각 사이트마다 20개의 쿠키만 허용, 더 많은 것을 저장하려고 하면 가장 오래된 쿠키가 삭제 • 최대 4096 바이트를 저장할 수 있음 • 사용자 정보 저장방법은 세션 상태(Session States)를 사용하는 것이지만, 세션 상태는 쿠키에 의존하게 되어 있음
HTTP Cookies on ASP.NET • HttpResponse 개체를 통해 Cookies라는 컬렉션을 노출 • Page 클래스 – Response 속성 – Cookies 컬렉션 참조 • C# - ASP.NET에서 쿠키 • 생성 • 삭제 • Expires 요소를 현재 날짜보다 뒤로 작성함으로, 브라우저가 이를 삭제하도록 유도
실습 목표 • Naver & Daum 지식통합검색 • 질의어를 입력 받아, 두 서비스의 검색 결과를 출력 • 사용자 이름을 입력 받아 쿠키로 저장 • 사용자 해제 없이 페이지를 닫았다가 다시 열면 해당 사용자가 떠야 함 • 사용자 등록 시 로그 아웃 버튼 배치 • 사용자 이름이 있으면 해당 사용자가 넣은 질의어를 미리 제공해준 DB에 저장 • 해당 DB는 DataSet / DataSetAdapter를 사용하여 구현할 것 • 지난 질의는 링크를 제공하여 클릭시 그 검색 결과가 나타나게 할 것 • 사용자 이름이 없으면 지난 질의어를 최근 5개만 출력 • 사용자 이름에 맞는 지난 질의어 출력 • 성인 검색어 판별하여 제한, 오타 변환 API를 사용, 대체어를 출력 • AJAX / UpdatePanel의 사용은 자유 구현
구현시 사용할 SQL구문 • 지난 저장된 질의문 중 가장 높은 5개만 제시 • SELECT TOP 5 seq, username, query, querytimeFROM week10ORDER BY seq DESC • 특정 사용자 이름으로 검색된 질의문을 최근 순서대로 가져오는 SQL문 • SELECT query, querytime, seq, username FROM week10 WHERE (username = ?) ORDER BY seq DESC • 특정 사용자 이름으로 질의문을 DB에 저장할 때 사용할 SQL문 • INSERT INTO week10 (username, query, querytime)VALUES (?, ?, NOW())
DataSet/DataSetTableAdapter 구성 • 기본적인 질의에 사용될 것과, 특정 이름으로 검색할 수 있는 테이블 어댑터, 그리고 질의문을 DB에 삽입할 때 사용될 테이블 어댑터를 구성해야 함
GridView / DataTable Binding • 절차 • 새로운 DataTable 생성 • DataColumn 생성, (DataTable 인스턴스).Columns.Add()로 추가 • GridView에 추가 할 BoundField를생성, BoundField.HtmlEncode 속성을 false로 해 둠 • 컬럼 초기화, GridView.Columns.Add()로 생성한 BoundField 추가 • 데이터를 가져옴 • 생성한 Datatable.NewRow() 메서드로 새 DataRow 인스턴스 생성 • DataRow[“Column명”] = Guid.NewGuid().ToString() • DataRow[“Column명”] = 데이터 값; 으로 대입 • 생성한 DataTable.Rows.Add(값을 넣은 DataRow 인스턴스); 로 열 추가 • GridView.DataSource = 생성한 DataTable 대입 • GridView.DataBind() 로 데이터 바인딩 하면 화면에 그려진다.