๐
2025-05-14
๐ ํ์ต ๋ด์ฉ
1๏ธโฃ ๊ฒ์ API ๊ฐ์
โ
๋ค์ด๋ฒ ๊ฒ์ API๋?
- ๋ด์ค, ๋ธ๋ก๊ทธ, ๋ฐฑ๊ณผ์ฌ์ , ์ฑ
, ์น๋ฌธ์ ๋ฑ ๋ค์ํ ๋ถ์ผ์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ RESTful API๋ก ์ ๊ณต
- XML ๋๋ JSON ํ์์ผ๋ก ๊ฒฐ๊ณผ ๋ฐํ
- ํ๋ฃจ ํธ์ถ ํ๋: 25,000ํ
- ๋น๋ก๊ทธ์ธ ๋ฐฉ์ ์คํ API ํด๋ผ์ด์ธํธ ID์ ์ํฌ๋ฆฟ์ HTTP ํค๋์ ํฌํจํ์ฌ ์ธ์ฆ (OAuth ์ธ์ฆ ๋ถํ์)
โ
์ ํ๋ฆฌ์ผ์ด์
๋ฑ๋ก
2๏ธโฃ Controller ์ฝ๋ ๊ตฌํ (์ฑ
๊ฒ์)
package com.example.demo.C05Naver;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
@Controller
@Slf4j
@RequestMapping("/naver/search")
public class C02NaverSearchController {
@Value("${naver.client.id}")
private String NAVER_CLIENT_ID;
@Value("${naver.client.secret}")
private String NAVER_CLIENT_SECRET;
@GetMapping("/book/{keyword}")
@ResponseBody
public void book(@PathVariable("keyword") String keyword){
log.info("GET/naver/search/book...");
String url = "https://openapi.naver.com/v1/search/book.json?query=" + keyword;
HttpHeaders header = new HttpHeaders();
header.add("X-Naver-Client-Id", NAVER_CLIENT_ID);
header.add("X-Naver-Client-Secret", NAVER_CLIENT_SECRET);
HttpEntity entity = new HttpEntity<>(header);
RestTemplate rt = new RestTemplate();
ResponseEntity<String> response = rt.exchange(url, HttpMethod.GET, entity, String.class);
System.out.println(response.getBody());
}
}
๐ ํ
์คํธ ๋ฐฉ๋ฒ
๐ฅ๏ธ ์ฝ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ (์์ฝ)
{
"total": 9,
"items": [
{
"title": "์ค์ฑ์ฐ์ ์ดํ C ํ๋ก๊ทธ๋๋ฐ (๊ฐ์ ํ)",
"author": "์ค์ฑ์ฐ",
"publisher": "์ค๋ ์ง๋ฏธ๋์ด",
"pubdate": "20101101"
},
{
"title": "์ค์ฑ์ฐ์ ์ดํ Java ํ๋ก๊ทธ๋๋ฐ",
"author": "์ค์ฑ์ฐ",
"publisher": "์ค๋ ์ง๋ฏธ๋์ด",
"pubdate": "20170705"
}
]
}
๐ ์ผ๋ถ ๋์ ์ ๋ณด ์์ฝ (Markdown ํ)
์ ๋ชฉ | ์ ์ | ์ถํ์ฌ | ์ถ๊ฐ์ผ |
---|
์ค์ฑ์ฐ์ ์ดํ C ํ๋ก๊ทธ๋๋ฐ | ์ค์ฑ์ฐ | ์ค๋ ์ง๋ฏธ๋์ด | 2010-11-01 |
์ค์ฑ์ฐ์ ์ดํ Java ํ๋ก๊ทธ๋๋ฐ | ์ค์ฑ์ฐ | ์ค๋ ์ง๋ฏธ๋์ด | 2017-07-05 |
์ค์ฑ์ฐ์ ์ดํ ํ์ด์ฌ ๊ธฐ์ดํธ | ์ค์ฑ์ฐ | ์ค๋ ์ง๋ฏธ๋์ด | 2018-11-20 |
๐ฅ ์ ๋ฆฌ
- ๋ค์ด๋ฒ ์ฑ
๊ฒ์ API๋ ํด๋ผ์ด์ธํธ ID/์ํฌ๋ฆฟ๋ง์ผ๋ก ํธ์ถ ๊ฐ๋ฅํ RESTful API
- Spring Boot์
RestTemplate
์ผ๋ก ํค๋๋ฅผ ์ค์ ํด ๊ฐ๋จํ ํธ์ถ ๊ฐ๋ฅ
- ์๋ต ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ๋ฉด, ์น์ ๋์ ๋ชฉ๋ก์ด๋ ์์ธ ์ ๋ณด๋ฅผ ํํํ ์ ์์
๐ ์ฐธ๊ณ ์๋ฃ