반응형
공공 오픈API 기능 테스트 중 @GetMapping으로 데이터를 가져오는 방법 구현 完 -> 포스트맨으로 확인 됨.
주기적으로 데이터를 받아와 서비스를 제공하는 것을 목표로 하기 때문에
스케줄러를 사용해보기로 함!
여기서 내가 사용한 스케줄러 방법은 Spring Scheduler
오픈API의 샘플을 참고하여 구현하였음.
사용한 오픈 API - 교통소통정보(고속도로 및 국도별 실시간 소통정보 데이터와 API를 제공합니다.) https://www.its.go.kr/opendata/opendataList?service=traffic
코드
Controller.java
* @Scheduled(fixedDelay = 3000) 추가
: 3초마다 반복한다. () 안에 들어가는 속성은 다양하니 필요에 따라 찾아서 작성하면 됨.
package com.example.restfulwebservice.openapi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ctc.wstx.io.CharsetNames;
@RestController
public class Controller {
@Scheduled(fixedDelay = 3000)
@GetMapping("/api/traffic-info")
public String callApi() throws IOException{
StringBuilder result = new StringBuilder();
String urlStr = "https://openapi.its.go.kr:9443/trafficInfo?" +
"apiKey=test" +
"&type=all" +
"&minX=126.800000" +
"&maxX=127.890000" +
"&minY=34.900000" +
"&maxY=35.100000" +
"&getType=json";
URL url = new URL(urlStr.toString());
HttpURLConnection urlconnection = (HttpURLConnection)url.openConnection();
urlconnection.setRequestMethod("GET");
BufferedReader br;
br = new BufferedReader(new InputStreamReader(urlconnection.getInputStream(), "UTF-8"));
String returnLine;
while((returnLine = br.readLine())!= null) {
result.append(returnLine);
//result.append(returnLine+"\n");
}
urlconnection.disconnect();
System.out.println(result.toString());
return result.toString();
}
}
xxxxxxApplication.java : 작성되어진 여러 import는 무시
* Application 클래스에 어노테이션 @EnableScheduling 추가
package com.example.restfulwebservice;
import java.util.Locale;
import org.hibernate.validator.spi.messageinterpolation.LocaleResolver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
@EnableScheduling
@SpringBootApplication
public class RestfulWebServiceApplication {
public static void main(String[] args) {
SpringApplication.run(RestfulWebServiceApplication.class, args);
}
}
실행결과
결과를 즉시 보기위해 출력하였으며, 주기마다 잘 출력됨
728x90
반응형
'개발아닌개발 > springboot' 카테고리의 다른 글
Map<String, Object>의 안에 Object를 int로 바꾸는 방법 (2) | 2021.11.10 |
---|---|
[오류] JPA를 이용하여 UPDATE @query 사용 시, No results were returned by the query (0) | 2021.11.08 |
User 내용 수정하는 PUTMapping (0) | 2021.11.08 |
[SpringBoot] 프로젝트에 hateoas 기능 사용하기 (0) | 2021.11.05 |
SpringBoot 프로젝트 개요 (0) | 2021.11.05 |
댓글