개발 | 프로젝트/API
[API] 기상청 단기 예보 API 사용하기
seulll
2025. 5. 19. 15:22
학교 전공 강의 프로젝트로 개발 중인 앱에서 날씨 예보 정보가 필요해 기상청 단기 예보 API를 사용하려고 합니다.
1. API 신청 및 인증키 발급
https://www.data.go.kr/data/15084084/openapi.do
기상청_단기예보 ((구)_동네예보) 조회서비스
초단기실황, 초단기예보, 단기((구)동네)예보, 예보버전 정보를 조회하는 서비스입니다. 초단기실황정보는 예보 구역에 대한 대표 AWS 관측값을, 초단기예보는 예보시점부터 6시간까지의 예보를,
www.data.go.kr
위 포털에서 활용 신청을 한 후 인증키를 발급받습니다.
2. API 요청 URL 구성 방법
기상청 단기예보 API는 HTTP GET 방식으로 요청하며, 다음과 같은 기본 URL을 사용합니다.
http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst
여기서 http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/을 BASE_URL로 설정하고,
object WeatherAPI {
private const val BASE_URL = "https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/"
val api: WeatherService by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(WeatherService::class.java)
}
}
참고 문서의 활용가이드를 보면 필수적으로 포함해야 하는 요청 메세지 명세는 다음과 같습니다.
이 요청 메세지 명세를 확인하며 날씨 정보를 요청하면
interface WeatherService {
@GET("/getVilageFcst")
suspend fun getForecast(
@Query("serviceKey") serviceKey: String,
@Query("numOfRows") numOfRows: Int,
@Query("pageNo") pageNo: Int,
@Query("dataType") dataType: String,
@Query("base_date") baseDate: String,
@Query("base_time") baseTime: String,
@Query("nx") nx: Int,
@Query("ny") ny: Int
): Response<WeatherResponse>
}
아래와 같은 응답 데이터를 받을 수 있습니다.
JSON 형식의 응답 예시
{
"response": {
"body": {
"items": {
"item": [
{
"fcstDate": "20250519",
"fcstTime": "0900",
"category": "TMP",
"fcstValue": "21"
},
{
"category": "SKY",
"fcstValue": "3"
}
]
}
}
}
}