일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 다형성
- 서브셋폰트
- azure
- PostgreSQL
- process.env
- mock
- 객체지향
- npm
- github
- netlify
- 상속
- package
- AOP
- Solid
- 동적계획법
- 추상화
- DP
- Java
- dotenv
- dfs
- git
- GOF
- 캡슐화
- CSS
- MariaDB
- Secret
- 클라우드
- bfs
- 디자인 패턴
- 메모이제이션
Archives
- Today
- Total
이것저것 해보기🌼
[Open API] 네이버 Open API 사용하기 본문
오늘은 네이버의 Open API 중, 지역 검색 기능을 사용하는 방법에 대해 알아볼것이다.
네이버 Open API (지역 검색)
https://developers.naver.com/docs/serviceapi/search/local/local.md#%EC%A7%80%EC%97%AD
위 사이트에서 오픈 API 이용 신청을 하면, 내가 사용할 수 있도록 인증정보를 발급해준다.
이것을 활용해서 간단한 REST API를 만들어보자.
1. Postman 요청 날려보기
네이버 Open API 정보를 잘 확인해야한다.
출력포맷 JSON에 해당하는 URL을 확인하고,
필요한 요청변수도 확인한다.
제공되는 예시와 같이, Postman에서 GET을 호출했다.
Postman 요청:
예시는 증권사에 대한 정보검색인지, 아래와 같이 5개의 리스트가 JSON 포맷으로 응답이 온것을 확인해볼수 있었다.
{
"lastBuildDate": "Tue, 06 Jul 2021 14:43:33 +0900",
"total": 5,
"start": 1,
"display": 5,
"items": [
{
"title": "유안타<b>증권</b>",
"link": "http://www.myasset.com/",
"category": "금융,보험>주식,증권",
"description": "",
"telephone": "",
"address": "서울특별시 중구 을지로2가 185 유안타증권 빌딩",
"roadAddress": "서울특별시 중구 을지로 76 유안타증권",
"mapx": "310636",
"mapy": "551982"
},
{
"title": "도이치<b>증권</b>",
"link": "",
"category": "금융,보험>투자기관",
"description": "",
"telephone": "",
"address": "서울특별시 종로구 공평동 17 센트로폴리스 A동 12층",
"roadAddress": "서울특별시 종로구 우정국로 26 센트로폴리스 A동 11층",
"mapx": "310409",
"mapy": "552626"
},
{
"title": "<b>주식</b>투자의신",
"link": "https://multistock.modoo.at",
"category": "금융,보험>주식,증권",
"description": "",
"telephone": "",
"address": "서울특별시 용산구 한강로1가 64",
"roadAddress": "서울특별시 용산구 한강대로 211 102동 1904호",
"mapx": "309444",
"mapy": "548821"
},
{
"title": "뉴지스탁",
"link": "http://newsystock.blog.me/",
"category": "금융,보험>주식,증권",
"description": "",
"telephone": "",
"address": "서울특별시 마포구 공덕동 370-4",
"roadAddress": "서울특별시 마포구 백범로31길 21",
"mapx": "307390",
"mapy": "549907"
},
{
"title": "<b>주식</b>투자1번지",
"link": "http://cafe.naver.com/toozabooza",
"category": "금융,보험>주식,증권",
"description": "",
"telephone": "",
"address": "서울특별시 마포구 노고산동 106-89",
"roadAddress": "서울특별시 마포구 서강로 136 아이비타워",
"mapx": "306167",
"mapy": "550738"
}
]
}
2. REST API 작성하기
이제 Spring boot 로 직접 REST API 를 이용해 Open API를 활용해보자.
Parameter 중, "query"에 해당하는 정보는 "UTF-8"로 인코딩되어야함에 유의하여, 아래와 같은 코드를 작성하였다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
import java.nio.charset.Charset;
@Slf4j
@RestController
@RequestMapping("/api")
public class ServerApiController {
// https://openapi.naver.com/v1/search/local.json?
// query=%EC%A3%BC%EC%8B%9D&display=10&
// start=1&
// sort=random
@GetMapping("/naver")
public String naver(){
//String query = "갈비집";
//String encode = Base64.getEncoder().encodeToString(query.getBytes(StandardCharsets.UTF_8));
URI uri = UriComponentsBuilder
.fromUriString("https://openapi.naver.com")
.path("/v1/search/local.json")
.queryParam("query","중국집")
.queryParam("display",10)
.queryParam("start",1)
.queryParam("sort","random")
.encode(Charset.forName("UTF-8"))
.encode()
.build()
.toUri();
RequestEntity<Void> req = (RequestEntity<Void>) RequestEntity
.get(uri)
.header("X-Naver-Client-Id","44kxy1gow7121Fh_pEFM")
.header("X-Naver-Client-Secret","eravX0Dkgw")
.build();
//주소 로그 확인
log.info("uri : {}",uri);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> result = restTemplate.exchange(req, String.class);
return result.getBody();
}
}
|
cs |
GET이기 때문에 바로 검색창으로 호출시, 아래와 같이
중구 다동의 중국집이 잘 나오는것을 확인해볼수 있다.
'BE > Spring Boot' 카테고리의 다른 글
[프로그래머스 과제관] 주문 관리 API 서버 개발 (6) | 2021.07.08 |
---|---|
[JUnit] CRUD 테스트코드 작성하기 (0) | 2021.07.06 |
Validation, Exception 처리하기 (0) | 2021.07.05 |
Annotation 정리 (0) | 2021.07.05 |
[AOP] 메소드 로그 찍기, Decode/Encode 하기 (0) | 2021.07.05 |