# 5. 오픈 API를 연계하고 싶어요.

API는 날씨 정보나 상권 정보처럼 개인이 수집할 수 없는 공공의 데이터나 방대한 양의 데이터를 가져오고 싶을 때 사용해요. 또한 네이버 검색 결과나 카카오페이처럼 그런 데이터로 만든 기능을 활용하고 싶을 때 사용해요.

### 오픈 API는 어디서 찾을 수 있을까요?

1. [공공데이터포털](https://www.data.go.kr/index.do), 국가가 공인하는 API 사례집
2. [네이버 API](https://developers.naver.com/main/), 네이버 검색 결과 활용
3. [카카오 API](https://developers.kakao.com/product), 카카오톡 기능 활용

오픈 API는 문서마다 데이터를 제공하는 형식이 달라요. 그래서 여러 API를 연계해 보면서 점차 문서를 읽는 것에 익숙해지는 것을 추천해요.&#x20;

이 문서에서는 **공공데이터포털**에서 제공하는 **질병관리청\_코로나19 국내발생현황 조회** 오픈 API를 연동해 볼게요.

***

### 사용 방법

1. [공공데이터포털](https://www.data.go.kr/index.do) 사이트 접속
2. 로그인 또는 회원가입
3. [질병관리청\_코로나19 국내발생현황 조회](https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15099842) 오픈 API 상세로 이동
4. 오픈 API 활용 신청

   &#x20;

   <figure><img src="https://kitschers.ohmyapp.io/assets/users/ticket/2023/08/02/9fd4b022-2a7d-445d-b4d4-72d38119b179_2023080222.30.19.png" alt=""><figcaption></figcaption></figure>
5. 우측 상단 마이페이지 > 좌측 메뉴바 > 데이터 활용 > Open API > 활용신청 현황으로 이동

   <div align="left"><figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FsZEevFZWHE2V5HkSxYdw%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-08-25%2023.37.10.png?alt=media&#x26;token=70f3defb-3a03-4319-96a1-eee7aa6db59b" alt="" width="252"><figcaption></figcaption></figure></div>
6. 활용신청 된 데이터 클릭

   <div align="left"><figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FvRxIHY24cANDFJRFM1sl%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-08-25%2023.46.56.png?alt=media&#x26;token=8b94f662-ace3-4043-8bca-cd658b5f1c45" alt="" width="563"><figcaption></figcaption></figure></div>
7. 개발 계정 상세 보기 (참고문서 있을 시 다운로드)
8. 관리자 웹 > 로직 설정 >  '+'버튼을 클릭하여 새로운 로직을 생성해 주세요.
9. 아래와 같이 입력해 주세요.&#x20;
   * If When :  Data is created
   * Where : autoSampleTest
   * Then : API to DB를 입력해 주세요.
10. 아래의 빈 칸 작성 시, API 별로 정보를 제공하는 형식이 다르기 때문에 사용할 API에 맞게 입력해 주세요.

<div align="left"><figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FXI8LQkfSokc6r0Y4cwbV%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-01-11%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.56.35.png?alt=media&#x26;token=9941076a-91f5-400c-b56a-57aec39012fe" alt="" width="345"><figcaption></figcaption></figure></div>

* Request URL : 오픈 API를 요청하는 링크 주소로,  End Point와 인증키를 참고문서에 따라 세팅하면 돼요.

`http://apis.data.go.kr/1790387/covid19CurrentStatusKorea/covid19CurrentStatusKoreaJason?serviceKey=`**`#{일반 인증 키}(일반 인증키를 넣어야 정상적으로 동작합니다.)`**

* Request Parameter : API 요청 시 필요한 정보를 담아서 같이 가져와주는 역할이에요. 예를 들어, 가져오고 싶은 데이터의 시작일과 종료일 또는 페이지 수 등이 있어요. 없을 시 비워둬도 돼요.&#x20;

`{}`

* Request Header : API 요청 시 필요한 숨은 정보를 담아서 같이 가져와주는 역할이에요. 예를 들어, 인증 정보(token) 등이 있어요. 없을 시 비워둬도 돼요.&#x20;

`{}`

* HTTP Method Type : API를 호출하는 방법이에요. 'GET'과 'POST'가 있는데, 대부분 'GET'을 사용해요.
* Timeout : API 응답 대기 시간을 제한하는 역할이에요. 응답 대기 시간이 너무 길 경우, 앱 작동에 문제를 일으킬 수 있어요. 우선 비워뒀다가 문제 발생 시 설정해도 돼요. 시간은 초 단위로 설정해 주세요.&#x20;
* Collection to store data in : API 응답 데이터를 저장할 위치예요. 컬렉션명을 입력해 주세요.

`coronaPublicData`

* Where to get data from response : API 응답 데이터 안에서 가져올 배열 데이터의 위치예요. 저장할 데이터의 구조를 확인하고, 가져올 배열 데이터를 점 표기법으로 입력해 주세요.

`response.result`

* Data Search Condition : 기존 데이터가 있을 시 업데이트 할 데이터를 찾는 검색 조건이에요. 세부 처리 조건에서 @query의 rawFind 와 같은 역할을 해요. 데이터를 계속 추가하고 싶으면 비워두면 돼요.
* Data Entries : 컬렉션에 어떤 항목 ID로, 어떤 데이터 항목을 저장할 건지 설정하는 역할이에요. {"저장할 항목 ID" : "item.가져올 데이터 항목 ID"} 형식으로 입력하면 돼요.

`{ "mmddhh": "item.mmddhh" }`

11. 'Save' 버튼을 클릭해 입력한 로직을 생성해 주세요.
12. 확인
    1. 9번에서 "Where"에서 선택한 메타를 사용중인 웹 메뉴 또는 앱 화면으로 이동해 주세요.
    2. 9번에서 "If When"에서 선택한 것에 따라, 데이터를 등록 or 수정 or 삭제를 해주세요.
    3. 'Collection to store data in'에서 선택한 컬렉션에 데이터가 잘 저장됐는지 확인해 주세요.

> \#로직, #오픈 API, # API 연계, #API to DB, #공공데이터포털

2024.01.11 Jinny
