Open API ์ด์ฉ
service
package kr.test.dev.Service.api;
import kr.test.dev.Service.annual.AnnualService;
import kr.test.dev.Vo.HolidayItemVo;
import kr.test.dev.Vo.HolidayResponseVo;
import kr.test.dev.Vo.HolidayVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
//๊ณต๊ณต๋ฐ์ดํฐ ํน์ผ์ ๋ณด API ์กฐํ
public class ApiServiceImpl implements ApiService{
@Autowired AnnualService annualService;
private final String holidayURL = "https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo";
@Value("${openApi.serviceKey}")
//์คํ API ํค๋ application.yml์์ ๋ถ๋ฌ์ด
private String serviceKey;
/**
* ํน์ผ์ ๋ณด api ์กฐํ
* @param year
* @return
*/
@Override
public List<HolidayItemVo> getholidayInfo(String year) {
RestTemplate restTemplate;
// api ์ ๋ณด ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ์ฉ list
List<HolidayItemVo> items = new ArrayList<>();
// ๊ณตํด์ผ ์ ๋ณด db ์ ์ฅ์ฉ vo
HolidayVo holidayVo;
// 1~12์ ๊ณตํด์ผ ์ ๋ณด ์กฐํ
for (int i = 1; i < 13; i++) {
String solMonth = (i < 10) ? "0" + i : String.valueOf(i);
try {
URI requestURI = new URI(holidayURL + "?serviceKey=" + serviceKey + "&solYear=" + year + "&solMonth=" + solMonth);
// log.info("ํน์ผ์ ๋ณด requestURI = [{}]", requestURI);
// requestURI ํ์ -> https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo?serviceKey=๋ฐ๊ธ๋ฐ์์๋น์คํค&solYear=2023(๋
๋)&solMonth=01(์)
restTemplate = new RestTemplate();
//api ๊ฒฐ๊ณผ๊ฐ
HolidayResponseVo response = restTemplate.getForObject(requestURI, HolidayResponseVo.class);
items = response.getBody().getItems();
// ๊ณตํด์ผ ์ ๋ณด db ์ ์ฅ
for (HolidayItemVo item : items) {
if ("Y".equals(item.getIsHoliday())) {
holidayVo = new HolidayVo();
holidayVo.setHolidayDate(item.getLocdate());
holidayVo.setHolidayNm(item.getDateName());
// annualService.insertHolidayInfo(holidayVo);
}
}
for (HolidayItemVo item : items) log.info("ํน์ผ ์ ๋ณด = [{}]", item.toString());
} catch (Exception e) {
log.info("Exception :: {}", e.getMessage());
}
}
return items;
}
}
controller
/**
* ํน์ผ ์ ๋ณด ์กฐํ
* @return
*/
@GetMapping(value = "holiday")
@ResponseBody
public List<HolidayItemVo> holidayList(@RequestParam String year) {
// ํด๋นํ๋ ๋
๋์ ํน์ผ์ ๋ณด๋ฅผ ์กฐํ ํ db์ ์ ์ฅ
return apiService.getholidayInfo(year);
}
HolidayItemVo
package kr.test.dev.Vo;
import lombok.Data;
import javax.xml.bind.annotation.XmlRootElement;
@Data
@XmlRootElement(name = "item")
//ํน์ผ item vo
public class HolidayItemVo {
private String locdate;
private String dateKind;
private String isHoliday;
private String dateName;
private int seq;
}
HolidayItemsVo(list)
package kr.test.dev.Vo;
import lombok.Data;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
@Data
@XmlRootElement(name = "body")
public class HolidayItemsVo {
private List<HolidayItemVo> items;
@XmlElementWrapper(name = "items")
@XmlElement(name = "item")
public List<HolidayItemVo> getItems() {
return items;
}
}
HolidayResponseVo
package kr.test.dev.Vo;
import lombok.Data;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Map;
@Data
@XmlRootElement(name = "response")
public class HolidayResponseVo {
private Map<String, Object> header;
private HolidayItemsVo body;
}
HolidayVo(db ์ ์ฅ์ฉ)
package kr.test.dev.Vo;
import kr.renosoft.portal.common.CommonVo;
import lombok.Data;
@Data
public class HolidayVo extends CommonVo {
private int holidaySno; // ๊ณตํด์ผ ์๋ฒ
private String holidayDate; // ๊ณตํด์ผ ๋ ์ง
private String holidayNm; // ๊ณตํด์ผ ๋ช
์นญ
}
๊ฒฐ๊ณผ๊ฐ(xml์ java๋ก ๋ณํ)
๊ฒฐ๊ณผ๊ฐ(xml)
์ฐธ์กฐ: ์ด๋ค ๋ธ๋ก๊ทธ๋ถ ์ด์๋๋ฐ ๊ธฐ์ต์ด ์๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
'IT > development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[spring] springBoot ajax json๊ณผ file ์ ์ก (1) | 2023.06.03 |
---|---|
[thymeleaf] thymeleaf javascript๋ก ๋ณ์ 1๊ฐ ์ด์ ์ ๋ฌ (0) | 2023.05.30 |
[logback] log pattern ์ค์ (2) | 2023.05.14 |
[thymeleaf] if unless ์กฐ๊ฑด (0) | 2023.05.13 |
[logback] logback ํ์ผ ์์ฑ (0) | 2023.05.13 |
๋๊ธ