R 공공데이터포털 OpenAPI 활용방법

[R] 공공데이터포털 OpenAPI 활용방법

공공데이터포털에서 코로나데이터를 얻어보자

✔ OpenAPI를 처음 사용해보는 분이라면 아래 유튜브영상이 도움 될 거에요.
공공데이터포털 OpenAPI 활용방법 - youtube


데이터 선택

공공데이터포털에서 원하는 데이터를 찾는다. (ex, 보건복지부 코로나19해외발생 현황)


데이터 활용신청

활용신청을 한 후 마이페이지 > 개발계정에 접근하면 승인된 OpenAPI를 확인할 수 있다.
2시간 이후에 사용할 수 있다고 하지만 대부분 처리가 늦게 되어서 넉넉하게 하루 뒤에 API를 사용하는게 낫다. ( 처리상태가 승인인데 SERVICE-KEY-IS-NOT-REGISTERED-ERROR이라는 에러메세지가 뜨는 상황이 발생한다ㅎ.. )


API 호출

다양한 언어로 호출이 가능하다.
나는 shiny library를 이용할 예정이므로 R을 통해 호출해볼거다.

API를 호출하면 요청 URL과 Date, Status(200), Content-Type(XML or JSON), Size가 출력된다.여기서 Status가 200이 아닐 경우, 비정상적으로 API가 호출된 것을 의미한다.

HTTP Response결과로 JSON 형태의 데이터를 받았으므로 해당 데이터를 추출해야한다. (res -> text로 변환 -> json 객체에 할당 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
library(httr)
library(tidyverse)
library(jsonlite)

res <- GET('http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19NatInfStateJson?serviceKey=[Your Service Key Decoding]&pageNo=1&numOfRows=10&startCreateDt=20200310&endCreateDt=20200414')
print(res)
# Response [http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19NatInfStateJson?serviceKey=[Your Service Key Decoding]&pageNo=1&numOfRows=10&startCreateDt=20200310&endCreateDt=20200414]
#   Date: 2022-02-06 12:22
#   Status: 200
#   Content-Type: application/json
#   Size: 92 B

res %>%
    content(as ='text', encoding ='UTF-8') %>%
    fromJSON() -> json
str(object = json)
df <- json$response$body$items$item


Reference