https://developers.kakao.com/docs/latest/ko/local/dev-guide#search-by-keyword
스프링부트에서 카카오 지도 API를 통해서 주소 또는 키워드를 입력하면 관련된 주소 정보를 가져오도록 해보자! 자세한 내용은 위의 링크에서 확인하면 된다.
1 ) 주소 검색하기
주소를 지도 위에 정확하게 표시하기 위해 해당 주소의 좌표 정보를 제공하는 API이다.
주소에 해당하는 지번 주소, 도로명 주소, 좌표, 우편번호, 빌딩명 등의 다양한 정보를 함께 제공한다.
이 API는 지번 주소, 도로명 주소 모두 지원한다고 한다.
먼저 포스트맨으로 테스트 해보자!
GET 요청을 위해서는 다음과 같은 정보가 필요하다
- query = {찾고자하는 주소정보}
- 헤더
- Key : Authorization
- Value : KakaoAK {나의 REST_API_KEY}
query는 필수적인 파라미터이며, analyze_type, page, size을 요청 파라미터로 제공할 수 있다.
응답에 대한 파라미터 정보들은 카카오 디벨로퍼 개발가이드에 제공되어있다.
https://dapi.kakao.com/v2/local/search/address.json?query={주소정보}
2 ) 스프링부트 연동하기
먼저 카카오 디벨로퍼 사이트에서 내 애플리케이션 생성 후 승인키를 발급 받아야 한다.
그 후 [내 애플리케이션] > [앱 설정] > [플랫폼] 에서 Web 선택 후 사이트 도메인을 임의로 설정해준다. (ex. http://localhost:8080)
위의 과정 이후 컨트롤러에 다음과 같이 작성해주었다.
public class AddressController {
@RequestMapping(value = "/map", method = RequestMethod.GET, produces="application/json;charset=UTF-8")
public String getKakaoApiFromAddress(@RequestParam("address") String roadFullAddr) {
String apiKey = "{나의 REST_API_KEY}";
String apiUrl = "https://dapi.kakao.com/v2/local/search/address.json";
String jsonString = null;
try {
// 1. URL 인코딩 - URL로 사용할 수 없는 문자를 '%XX'의 형태로 변환
// ex) 파라미터 address를 한글로 사용하기 떄문에 인코딩을 해주자
roadFullAddr = URLEncoder.encode(roadFullAddr, "UTF-8");
// 2. 요청 url을 만들기
String addr = apiUrl + "?query=" + roadFullAddr;
// 3. URL 객체 생성
URL url = new URL(addr);
// 4. URL Connection 객체 생성
URLConnection conn = url.openConnection();
// 5. 헤더값 설정해주기
conn.setRequestProperty("Authorization", "KakaoAK " + apiKey);
// 6. StringBuffer에 값을 넣고 String 형태로 변환하고 jsonString을 return
BufferedReader rd = null;
rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
StringBuffer docJson = new StringBuffer();
String line;
while ((line=rd.readLine()) != null) {
docJson.append(line);
}
jsonString = docJson.toString();
rd.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return jsonString;
}
테스트를 해보면 정보를 잘 가져오는 것을 확인할 수 있다.
이 포스팅에서는 주소 검색 API만 구현되었다. 하지만 아래와 같이 다양한 API를 제공한다.
위의 코드와 방법은 동일하나, 해당 api가 제공하는 apiURL만 수정해주면 된다.
// 예시
String apiUrl = "https://dapi.kakao.com/v2/local/search/keyword.json";
3) 참고자료
'Server' 카테고리의 다른 글
AWS EC2 서버 무중단 배포/백그라운드 실행 (0) | 2022.09.22 |
---|---|
헤로쿠 배포 과정과 마주친 문제들 (H10, H14 ...) (0) | 2022.09.14 |
AWS EC2 Ubuntu 서버에 Domain 적용 (가비아) (0) | 2022.09.13 |
[Server] phpMyAdmin 설치법 (0) | 2022.08.16 |
[Server] MySQL 외부에서 접속하기(Workbench) (0) | 2022.08.16 |
댓글