์ค๋ฅ
์คํ๋ง์ผ๋ก ๊ตญํ ๋ถ ๊ฑด์ถ๋ฌผ๋์ฅ์ ๋ณด Open Api๋ฅผ ๋ถ๋ฌ์ค๋๋ฐ ์๋ฌ๋ฅผ ๋ง์ฃผํ๋ค.
์ธ์ฝ๋ฉ ํค๋ฅผ ์ฌ์ฉํด์ ๋ธ๋ผ์ฐ์ ์์ api ํธ์ถํ๋ฉด ์ ๋ถ๋ฌ์์ง๋๋ฐ, ์คํ๋ง์์ ํธ์ถํ๋ฉด SERVICE_KEY_IS_NOT_REGISTERED_ERROR ์๋ฌ๊ฐ ๋ด๋ค.
<OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>SERVICE ERROR</errMsg>
<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
<returnReasonCode>30</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse>
ํด๊ฒฐ์ฑ
1. ์๋น์คํค๋ฅผ ๋์ฝ๋ฉํค๋ก ์ค์ ํ์ URLEncoder๋ฅผ ์ฌ์ฉํด์ ๊ฐ ํ๋ผ๋ฏธํฐ๋ ์๋น์คํค๋ฅผ ์ธ์ฝ๋ฉํด์คฌ๋ค
์ธ์ฝ๋ฉ ๋์ฝ๋ฉ์ ์ํ์..
// ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ URLEncoder๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ
String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString());
String encodedBjdongCd = URLEncoder.encode(bjdongCd, StandardCharsets.UTF_8.toString());
String encodedServiceKey = URLEncoder.encode(serviceKey, StandardCharsets.UTF_8.toString());
2. ์ด์ ์๋ String์ผ๋ก uri ์ง์ ํด์คฌ๋๋ฐ URI ๊ฐ์ฒด๋ก ์์ฑํด์คฌ๋ค.
// URI ์์ฑ (๊ฐ์ฒด๋ก ์์ฑํด์ค์ผํจ!!!!)
URI uri = URI.create(String.format("%s?sigunguCd=%s&bjdongCd=%s&ServiceKey=%s&_type=json",
url, encodedSigunguCd, encodedBjdongCd, encodedServiceKey));
3. ๋ง์ง๋ง์ผ๋ก WebClient ํธ์ถํด์ฃผ๊ธฐ
// WebClient ํธ์ถ
String responseBody = webClient.get()
.uri(uri)
.retrieve()
.bodyToMono(String.class)
.block();
์ ์ฒด์ฝ๋
@GetMapping("/api/{sigunguCd}/{bjdongCd}")
public String callApi(@PathVariable("sigunguCd") String sigunguCd,
@PathVariable("bjdongCd") String bjdongCd) throws IOException {
StringBuilder returnAll = new StringBuilder();
String url = "http://apis.data.go.kr/1613000/BldRgstService_v2/getBrBasisOulnInfo";
// ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ URLEncoder๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ
String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString());
String encodedBjdongCd = URLEncoder.encode(bjdongCd, StandardCharsets.UTF_8.toString());
String encodedServiceKey = URLEncoder.encode(serviceKey, StandardCharsets.UTF_8.toString());
// URI ์์ฑ (๊ฐ์ฒด๋ก ์์ฑํด์ค์ผํจ!!!!)
URI uri = URI.create(String.format("%s?sigunguCd=%s&bjdongCd=%s&ServiceKey=%s&_type=json",
url, encodedSigunguCd, encodedBjdongCd, encodedServiceKey));
// WebClient ํธ์ถ
String responseBody = webClient.get()
.uri(uri)
.retrieve()
.bodyToMono(String.class)
.block();
openApiService.init(responseBody);
returnAll.append(responseBody);
return returnAll.toString();
}
์ค๋ฅ ํด๊ฒฐ ์คํ๋ง์์๋ ์ ๋ฐ์์์ง๋ค!!
'์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์คํ๋ง] ๋น๋ ํจํด @Builder (1) | 2024.01.23 |
---|---|
[์คํ๋ง] DTO๋ฅผ ์ ์ธ๊น? (0) | 2024.01.23 |
[์คํ๋ง] ์น์๋ฒ, WAS, ์๋ธ๋ฆฟ / SSR, CSR (0) | 2024.01.14 |