상세 컨텐츠

본문 제목

[코드스테이츠 PMB 11기] 오픈 API 기능과 구조 살펴보기

코드스테이츠 PMB 11기/DAILY ASSIGNMENT

by hithisiseunji 2022. 4. 27. 14:29

본문

W7D3 DAILY 과제입니다.

 

오픈 API
오픈 API(Open Application Programming Interface, Open API, 공개 API) 또는 공개 API는 개발자라면 누구나 사용할 수 있도록 공개된 API를 말하며, 개발자에게 사유 응용 소프트웨어나 웹 서비스의 프로그래밍 적인 권한을 제공한다
출처: https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_API

 

 

이제까지 이것저것 하면서 경험한 오픈 API는 크게 두 가지 용도였다.

로그인, 지도, 검색 같은 기능을 가져오기 위한 용도와 데이터를 가져오기 위한 용도.

사실 동작방식도 같아서 같은 말일 것이다...!

(API 사용가이드를 내가 알아들을 수 있는가 그렇지 않은가가 차이점인 것 같다. ) 

 


네이버 로그인 API

네이버 로그인이 필요한 서비스를 함께 제공하기 위해서, 아니면 네이버 소셜로그인으로 회원가입을 대신하기 위해서 사용할 수 있다. 

'네이버 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다. 네이버 로그인 인증 요청 API는 여러분의 웹 또는 앱에 네이버 로그인 화면을 띄우는 API입니다. 이용자가 네이버 회원 인증에 성공하면 API로부터 받은 code 값을 이용해서 접근 토큰 발급 요청 API를 호출합니다. 접근 토큰 발급 요청 API를 통해 받은 접근 토큰(access token) 값은 다음과 같이 회원 프로필 조회를 비롯하여 여러가지 로그인 오픈 API를 호출하는데 사용할 수 있습니다.

https://developers.naver.com/docs/login/api/api.md

 

네이버 로그인 API 명세 - LOGIN

'네이버 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다. 네이버 로그인 인증 요청 API는 여러분의 웹 또는 앱에 네이버 로그인 화면을 띄우는 AP

developers.naver.com

네이버 로그인 API에서 회원인증이 되면 발급받은 접근 토큰으로 로그인이 필요한 다른 네이버 오픈 API를 호출할 수 있다. API를 이용하기 위해서는 오픈API 이용신청하고 앱을 등록해야한다.

 


 

도서관 정보나루 OPEN API

 

국립중앙도서관에서 운영하는 오픈 API 인데, 전국 도서관 인기대출자료, 도서관 현황 등을 불러올 수 있다. 도서 관련 정보를 제공할 때 유용하게 사용하고 있다. 

(하나 아쉬운 점은... 정보 업데이트를 자동으로 하는게 아니라 도서관 주소 같은 부분은 사람이 일일이 하는 것 같아서...실제 정보와 다른 것도 간혹 있다는 것...)

 

https://www.data4library.kr/apiUtilization

 

도서관 정보나루

도서관별 장서/대출 데이터 조회 주요기능 빅데이터 분석 플랫폼을 통해 데이터를 공개하는 도서관 정보를 제공합니다. 데이터 공개에 참여하는 도서관의 목록과 각 도서관의 주소, 연락처, 홈

www.data4library.kr

 

하나만 예로 들자면, 인기대출도서를 조회할 수 있다. 

 

0123

이렇게 친절히 문서가 나와있다. 발급받은 키를 넣고 검색 조건 선택하고 얼만큼씩 불러올 것인지, 응답 유형은 어떻게 할 것인지 입력해서 호출하면 응답을 받을 수 있다. 

 


OPEN API 하나만 골라서 자세히 살펴보자.

 

네이버 지도 Geocoding

 

네이버 지도 앱 URL Scheme을 사용하면 외부 앱이나 웹 페이지에서 네이버 지도 앱을 실행해 장소 표시, 검색, 길찾기, 내비게이션 등 다양한 지도 기능을 수행할 수 있다.

지도 위에 장소를 직접 표시해야 하는 경우나, 아니면 다른 API를 사용하기 위해서 장소의 좌표가 필요하다.

그 경우 주소를 좌표로 변환해주는 기능이 필요한데, 네이버 지도 GEOCODING API를 활용할 수 있다.

 

https://api.ncloud-docs.com/docs/ai-naver-mapsgeocoding

 

Geocoding 개요 - Geocoding

 

api.ncloud-docs.com

 

Geocoding은 주소의 텍스트를 입력받아 좌표를 포함한 상세정보들을 제공한다.

 

API를 호출하기에 앞서 다음과 같은 세팅과정이 필요하다.

애플리케이션 등록으로 클라이언트 ID와 Secret 값을 받아야 한다. (응답 형식은 JSON. 간혹 공공데이터 OPEN API 중에 XML로만 응답을 주는 곳도 있었다. 아래에 비교 글 참고)

 

 

오류 코드 목록도 있다. 오류가 발생하면 API는 오류코드를 띄워주는데, 이 표를 통해 어떤 오류가 발생했는지 확인할 수 있다.

 

1. 요청하기

 

curl -G "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode" \
    --data-urlencode "query=분당구 불정로 6" \
    --data-urlencode "coordinate=127.1054328,37.3595963" \
    -H "X-NCP-APIGW-API-KEY-ID: {애플리케이션 등록 시 발급받은 client id값}" \
    -H "X-NCP-APIGW-API-KEY: {애플리케이션 등록 시 발급받은 client secret값}" -v

위와 같은 형식으로 서버에 요청한다.

파라미터와 헤더에 대한 설명을 참고해야한다.

2. 응답 받기

 

다음과 같은 응답을 받을 수 있다.  각 파라미터(?)에 대한 설명은 아래 표를 참조한다.

 

{
    "status": "OK",
    "meta": {
        "totalCount": 1,
        "page": 1,
        "count": 1
    },
    "addresses": [
        {
            "roadAddress": "경기도 성남시 분당구 불정로 6 그린팩토리",
            "jibunAddress": "경기도 성남시 분당구 정자동 178-1 그린팩토리",
            "englishAddress": "6, Buljeong-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea",
            "addressElements": [
                {
                    "types": [
                        "POSTAL_CODE"
                    ],
                    "longName": "13561",
                    "shortName": "",
                    "code": ""
                }
            ],
            "x": "127.10522081658463",
            "y": "37.35951219616309",
            "distance": 20.925857741585514
        }
    ],
    "errorMessage": ""
}

 

 

 


JSON과 XML 비교

https://velog.io/@cil05265/XML%EA%B3%BC-JSON%EC%9D%98-%ED%8A%B9%EC%A7%95-%EA%B3%B5%ED%86%B5%EC%A0%90-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

XML과 JSON의 특징, 공통점, 차이점

XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어입니다.XML은 EXtensible Markup Language의 약자로, 수많은 응용 분야에서 데이터를 저장하고 전

velog.io

 

 

관련글 더보기

댓글 영역