Delphi [REST API] 다음 Kakao > 로컬 > 주소검색 연동하기
2017.09.18 15:07
다음 등의 포털 사에서는 자사 데이터 일부를 Open API로 공개하고 있습니다.
특히 지도나 주소, 검색 등은 직접 데이터를 수집하는 것보다 포털의 데이터를 활용하는 것이 개발 및 유지보수에 유리할 수 있습니다.
오늘은 데브기어 테크게시판을 통해 다음 카카오의 주소검색 API 연동을 문의주셔서 해당 내용을 공유합니다.
아래 샘플을 REST API를 이용해 카카오 주소 검색 Open API와 연동하는 내용입니다.
(카카오 Open API의 대부분은 REST API를 제공합니다. )
해당 내용을 잘 익히면 다양한 Open API를 여러분의 앱에서 활용하실 수 있습니다.
카카오 개발자 > 로컬 : https://developers.kakao.com/docs/latest/ko/local/dev-guide#address-coord
카카오 Open API를 연동하기 위해서는 앱을 등록하고, 앱 키를 받아야 합니다.(해당 내용의 설명은 생략합니다.)
카카오 개발자 > 내 애플리케이션 : https://developers.kakao.com/apps
위 링크를 참고해 개발했으며, 제일 문제가 됐던 부분은 HTTP 해더에 Authorization 값을 추가하는 부분입니다.
연동한 결과는 아래와 같습니다.
주요 코드는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
uses REST . TYpes; const API_KEY = '' ; { https://developers.kakao.com/ 등록 > 앱 생성 > 앱키(REST API 키)를 위(API_KEY)에 입력 } procedure TForm2 . Button1Click(Sender: TObject); begin RESTRequest1 . Params . ParameterByName( 'query' ).Value := Edit1 . Text; RESTRequest1 . Execute; end ; procedure TForm2 . FormCreate(Sender: TObject); var Param: TRESTRequestParameter; begin RESTClient1 . Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,' ; RESTClient1 . AcceptCharset := 'UTF-8, *;q=0.8' ; RESTRequest1 . Resource := 'v2/local/search/address.json?query={query}' ; Param := RESTRequest1 . Params . AddHeader( 'Authorization' , 'KakaoAK ' + API_KEY); Param . Options := [TRESTRequestParameterOption . poDoNotEncode]; RESTResponseDataSetAdapter1 . RootElement := 'documents' ; end ; |
참고로, Authorization 해더 파라메터의 옵션에 TRESTRequestParameterOption
.
poDoNotEncode를 설정하지 않으면,
값이 인코딩 되어 인증 오류가 발생합니다.
샘플 프로젝트
문단제목
- REST Client Library - http://docwiki.embarcadero.com/RADStudio/en/REST_Client_Library
원글 : http://blog.hjf.pe.kr/472
도움 많이 받고 있습니다
위의 샘플에서 FDMemTable에 검색을 그림과 같이 하였을때
위의 Memo에는
address부분만 살펴보면
<"address_name":"서울 서초구 서초동 1303-22","b_code":"1165010800","h_code":"1165053100","main_adderss_no":"1303","main_address_no":"1303","mountain_yn":"N","region_1depth_name":"서울","region_2depth_name":"서초구","region_3depth_h_name":"서초4동","region_3depth_name":"서초동","sub_adderss_no":"22","sub_address_no":"22","x":"127.02407120735461","y":"37.503777055378556","zip_code":"137920">와 같이
전체가 다 나오지만 밑에 테이블의 address필드에는 <........"region_3depth_name":"서>까지만 나오며
저 뒤의 글자들까지는 저장이 안되는 부분이 발생합니다
FDMemTable쪽의 문제일까요??