오늘 배워 오늘 쓰는 OpenAPI/Quick Start

OpenAPI 가이드 보는 법과 사용법 (feat. 카카오 검색 / 번역)

ai-creator 2020. 3. 4. 15:31
반응형

# 기초 지식 - API 개념과 활용

전체 구성도

 

하나의 웹서비스를 제공하기 위해서 필요한 구성요소는 간단하게

1) front-end

2) back-end

3) front-end와 back-end의 interface

라고 볼 수 있습니다.

 

front-end는 화면의 구성을 처리하는 곳

back-end는 화면에 보여줄 정보를 처리하는 곳을 의미합니다.

그리고, front-end가 back-end에 요청을 할때, 특정 규칙에 맞게 요청해야 하는데요,

이러한 사용 규칙을 제공하는 것 = API (Application Programming Interface) 입니다.

 

OpenAPI는 제공처(카카오/네이버/ETRI등)에서 backend를 만들어 놓고, 그 backend를 이용하는 방법을 제공한다는 의미입니다.

그래서 사용자는 backend주소사용규칙만 알면, front-end를 만들어 backend의 자원을 사용하게 되는거죠.  얼

 

이렇게 back-end 없이(제공처의 back-end 이용) front-end만 만들어서 쓰는 것을 serverless 라고 부릅니다.

복잡한 기능은 back-end에서 처리하고, 필요한 기능만 구현하여 front-end만 만드는 것이지요.

 

카카오 책 검색 OpenAPI를 예로 들어보면 다음과 같습니다.

출처 : 조코딩

 

backend 사용법은 제공처에서 가이드(문서,설명서)를 제공하고 있습니다.  상세하게 작성하여 제공하는 곳도 있고 아닌곳도 있지만, 구현하기에는 충분합니다.  만약 기대했던 결과가 나오지 않을때는 Q&A를 할 수 있는 창구도 마련되어 있으니 필요시 도움을 받으면 됩니다.

 

가이드의 상세함이 다르다고 했지만,  아래내용들은 반드시 설명하고 있습니다. 꼭! 필요한 부분이라고 할 수 있겠죠?

출처 : 조코딩

요청 (request) 

- 어디로 / 어떻게 요청해야 하는지 기술되어 있음

















응답 (response)

- 어떤 결과가 전달되는지 기술되어 있음

 

HTTP/1.1 200 OK

정상적인 경우 응답이 오면

Content-Type: application/json;charset=UTF-8

담겨진 내용물의 type은 json을 사용하고, text는 UTF-8로 encoding되어 있습니다.

 

카카오에서 제공하는 OpenAPI를 이용해보면서, 감을 익혀보도록 하겠습니다.

책 검색과 번역입니다.

여러분이 책검색 서비스를 만들고, 번역 서비스를 만들 수 있다는 의미입니다.

# 카카오 OpenAPI - 책 검색

Step1)  TOOL로 책 검색 결과 보기
Step2)   API가이드 보면서 책 검색 OpenAPI 사용하기

Step1) TOOL 로 책 검색 결과 보기

간단하게 카카오에서 제공하는 tool (Link)을 사용하여 정상동작 여부를 확인 봅시다.

query에 질의어(검색어)를 입력하고, [요청]버튼을 클릭합니다.

 

결과

책 검색 결과입니다. 응답에 200 이라는 의미는, HTTP요청에 대한 상태를 나타내는 상태 코드(Status code)이며 '정상'을 의미합니다. 200이외의 값은 에러입니다.

(참고) 응답코드 링크 : https://developers.kakao.com/tool/rest-api/open/reference

 

그리고 검정 블록에 결과값이 보입니다. 펭수와 관련한 책이 "오늘도 펭수 내일도 펭수(한정판 꽃눈 에디션)" 이라는게 있네요.

 

Step 2) API가이드 보면서 책 검색 OpenAPI 사용 하기

참고 : API 가이드 - 카카오 책검색 

 

가이드를 보면 Request / Response가 각기 적혀져 있는 것을 알 수 있다. 

각 내용은 목적에 따라 다르니, 사용할 때 파악하면 된다. 

좌 : 요청(request)  / 우 : 응답(response)

주요하게 볼 문장들은 다음과 같다.

[Request]

- HOST + GET 은 어디 / 어떤 방식으로 요청을 보내야 하는지에 대한 주소를 의미(URL)

- 앱키는 헤더(header)에 담아

- GET 요청, 파라메터는 query가 필수

[Response]

- 바디(body)는 JSON 객체

 

 

(참고) API별로 GET요청인지 POST 요청인지 확인한다.

카카오스토리API의 경우를 예시로 보면, METHOD란에 기재되어 있음을 알 수 있다.

그럼 이제 구현해 보겠습니다.

 

전체코드

import requests
import json

url = "https://dapi.kakao.com/v3/search/book"
headers={ "Authorization" : "KakaoAK <REST API키 값>"}
data = {"query" : "펭수"}

response = requests.get(url, headers=headers, data=data)
print(response.status_code)

if response.status_code == 200:
    print("========= [meta] =========")
    print(response.json()['meta'])
    print("========= [documents] =========")
    print(response.json()['documents'])

실행 결과

 

200

=> 200은 성공을 의미합니다.

다른 값이 나왔다면, 에러를 의미하고 각 에러별 의미가 다르니 원인을 파악하고 수정해야 합니다.

TOOL에서 나온 결과와 동일합니다.

 

코드 설명

dict_keys(['documents', 'meta'])

=> JSON객체로 meta와 documents를 보내준다고 했는데, 결과가 제대로 나옴이 확인되었다.

print(response.json()['meta'])

{'pageable_count': 13, 'total_count': 14, 'is_end': False}

print(response.json()['documents'])

 

Step1, Step2에서 나온 결과가 정상적인지 알고 싶으신가요? 그럼 www.daum.net  에 접속해서 "책 검색"을 해보면 동일한 결과를 확인할 수 있습니다. 

이 의미를 다시 한번 생각해 봅시다. 이렇게 결과가 동일하게 나온다는 의미는? 여러분들도 www.daum.net처럼 책 검색 front-end를 만들 수 있다는 의미입니다. 카카오에서 제공하는 OpenAPI(=back-end)를 이용하여 책 검색 front-end를 만들 수 있다! 정말 멋지죠?

 

하나만 하면 아쉬우니깐, 1개를 더 해보시죠!!

# API 가이드 보기 - 번역

참고 : API 가이드 - 카카오 번역

 

좌 : 요청(request)  / 우 : 응답(response)

주요하게 볼 문장들은 다음과 같다.

[Request]

- HOST + GET 은 어디로 요청을 보내야 하는지에 대한 주소를 의미

- 앱키는 헤더(header)에 담아

- GET 또는 POST로 요청, 파라메터는 query / src_lang / target_lang가 필수

[Response]

- 바디(body)는 JSON 객체

 

 

구글 번역기를 통해 번역 기능을 위한 구성요소를 보면,

- 원문 언어 : 영어  ==> src_lang

- 변경하고 싶은 언어 : 한국어 ==> target_lang

- 문장 : Good afternoon!  ==> query

라는 것을 알 수 있겠죠?

 

POST로 해보겠습니다!!

 

ㅁ Request

import requests
import json
url = 'https://kapi.kakao.com/v1/translation/translate'
headers={ "Authorization" : "KakaoAK <REST API 키값>"}
data = {"src_lang" : "kr",
       "target_lang" : "en",
       "query" : "지난해 3월 오픈한 카카오톡 주문하기는 현재까지 약 250만명의 회원을 확보했으며, 주문 가능한 프랜차이즈 브랜드는 38개, 가맹점수는 약 1만 5천여곳에 달한다." }

response = requests.post(url, headers=headers, data=data) #, verify=False)

 

ㅁ Response

print(response.status_code)

200

response.json().keys()

dict_keys(['translated_text'])

response.json()['translated_text']

번역결과 만족하시나요?

 

 

여기까지, OpenAPI문서 보는 방법과 파이썬으로 코딩을 해보았습니다.

어렵지 않죠?^^

 

 

# Reference

- [JavaScript 기초와 활용 #2] API의 개념과 활용!

 


저작물의 저작권은 작성자에게 있습니다. 

공유는 자유롭게 하시되 댓글 남겨주세요~

상업적 용도로는 무단 사용을 금지합니다.

끝까지 읽어주셔서 감사합니다^^

 

반응형