이번에, 큐시즘에서 기업 프로젝트를 진행하면서 Tmap api를 활용하여 교통시간을 계산하는 로직을 담당하였다.
우선 플로우는 다음과 같다.
타임머신 자동차 길 안내 api와 대중교통 요약 api에서는, 출발 시간대를 고려하여 통근 시간을 고려할 수 있어, 해당 api를 활용하기로 했다.
참고로 Tmap api 공식문서가 친절하게 되어있어, 구현하는데 크게 헤매진 않았다 다들 공식 문서를 꼭 참고하길!
https://openapi.sk.com/
우선 Tmap api를 사용하려면, api키를 발급받아야한다.
우선 sk open api사이트에서 앱을 만든 후, 대시보드에서 확인하면 앱키를 발급받을 수 있다.
https://openapi.sk.com/products/calc?svcSeq=4&menuSeq=5

이후에는 위의 사이트에서 각자 필요한 요금제에 맞게 사용하기를 누른 후, 사용 신청을 하면, 바로 사용이 가능해진다.
참고로 나는 Tmap 대중교통, Tmap(자동차) api 두 개가 필요해서 둘 다 각각 신청해 사용중이다.
✅Tmap 대중교통은 Free 요금제가 하루에 10건만 가능하여 Premium으로 사용중이다.. 다들 참고하길
그리고 앱키와 base url, 나는 지오코딩도 사용하기에 coord-type도 yml에 추가해뒀다
tmap:
base-url: https://apis.openapi.sk.com/
appKey: {appKey}
coord-type: WGS84GEO
이후 tmap api 연동 시에 사용하기위해, webClient 코드도 구현한다.
@Configuration
public class WebClientConfig {
@Value("${tmap.base-url}")
private String tmapBaseUrl;
@Value("${tmap.appKey}")
private String appKey;
@Bean
public WebClient tmapWebClient() {
HttpClient httpClient = HttpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,5000)
.doOnConnected(conn -> conn
.addHandlerLast(new ReadTimeoutHandler(10))
.addHandlerLast(new WriteTimeoutHandler(10)))
.responseTimeout(Duration.ofSeconds(10));
return WebClient.builder()
.baseUrl(tmapBaseUrl)
.defaultHeader("appKey", appKey)
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
}
}
이제 Tmap api 사용을 위한 준비를 마쳤다. 다음 편에서는 해당 로직을 어떻게 구현했는지에 대해 작성하겠다.