- Open API : Naver & Daum OpenAPI - 2008 컴퓨터공학실험( I ) 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://en.wikipedia.org/wiki/HTTP_cookie#Drawbacks_of_cookies
HTTP Cookies on ASP.NET HttpResponse 개체를 통해 Cookies라는 컬렉션을 노출 Page 클래스 – Response 속성 – Cookies 컬렉션 참조 C# - ASP.NET에서 쿠키 생성 삭제 Expires 요소를 현재 날짜보다 뒤로 작성함으로, 브라우저가 이를 삭제하도록 유도 더욱 자세한 내용은 ASP.NET 쿠키 개요 : MSDN 을 참조하시길 바랍니다. http://msdn.microsoft.com/ko-kr/library/ms178194.aspx 세션 쿠키의 경우, ASP.NET_SessionId 라는 쿠키로 저장되는데, 이 쿠키는 ASP.NET에서 세션의 고유 식별자를 저장하는데 사용됩니다. 이 세션 쿠키는 하드디스크에 저장되지 않습니다. 쿠키의 값을 읽어 온 뒤에는, 그 값을 다시 쿠키로 배정하도록 합니다.
실습 목표 Naver & Daum 지식 통합검색 질의어를 입력 받아, 두 서비스의 검색 결과를 출력 사용자 이름을 입력 받아 쿠키로 저장 사용자 해제 없이 페이지를 닫았다가 다시 열면 해당 사용자가 떠야 함 사용자 등록 시 로그 아웃 버튼 배치 사용자 이름이 있으면 해당 사용자가 넣은 질의어를 미리 제공해준 DB에 저장 해당 DB는 DataSet / DataSetAdapter를 사용하여 구현할 것 지난 질의는 링크를 제공하여 클릭시 그 검색 결과가 나타나게 할 것 사용자 이름이 없으면 지난 질의어를 최근 5개만 출력 사용자 이름에 맞는 지난 질의어 출력 성인 검색어 판별하여 제한, 오타 변환 API를 사용, 대체어를 출력 AJAX / UpdatePanel의 사용은 자유 구현
구현 예
구현시 사용할 SQL구문 지난 저장된 질의문 중 가장 높은 5개만 제시 SELECT TOP 5 seq, username, query, querytime FROM week10 ORDER 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() 로 데이터 바인딩 하면 화면에 그려진다. 주의 사항: 직접 GridView의 컬럼을 추가하기 때문에, GridView의 AutoGeneratedColumns는 false로 해 두어야 한다.