ProgrammingLang/python

[python] 19. python Open API 와 JSON

jinkwon.kim 2018. 11. 26. 22:21
728x90
반응형

[python] 19. python Open API 와 JSON 



1. Open API(Application Programming Interface)

  - 여러 애플리케이션 사이에서 간편한 인터페이스

  

2. Open API - 주로 웹 API또는 API라고 함 

  - HTTP를 통해 데이터를 요청하며 주로 XML 이나 JSON 형식으로 응답

  - 최근에는 JSON 방식의 응답을 하는 API가 빠르게 늘어나고 있음 

  - 유용한 형식으로 정리된 데이터를 제공 받을 수 있음

  

  

3. API의 동작 방식 

  - 브라우저에서 API요청 

    > http://api.github.com/

    > JSON으로 응답이 옵니다.

4. JSON 요청 및 처리 

  1) Requests 모듈  - GET 요청 

    - HTTP 요청 클라이언트 모듈

    - Python 내장 모듈이 urllib 에 쉽고 편리하게 사용 가능

    - pip install requests 로 설치 후 사용

    - Get 방식 요청은 requests 모듈의 get()함수를 사용 한다.


# 네이버 검색 Open API 예제

  Ex) 예제 코드1

    - git hub 계정 정보 가져오는 예제


import requests

res = requests.get('https://api.github.com/users/chun4foryou')

print(res.text)

  Ex) 예제 코드

    - 네이버 검색하는 예제


import requests
import pprint

headers = {
'X-Naver-Client-Id': 'YOUR_CLIENT_ID',

'X-Naver-Client-Secret': 'YOUR_CLIENT_SECRET'

}

payload = {
'query': '파이썬',
'display': '10'
}

url = 'https://openapi.naver.com/v1/search/blog.json'

res = requests.get(url, headers=headers, params=payload)

pprint.pprint(res.json())

  2) Requests 모듈  - POST 요청 

# 네이버 번역 Open API 예제

    (1) 동작 방식

      - post 방식으로 요청을 해야한다. 

      - POST 방식 요청은 requests 모듈의 Request 객체를 사용 한다.


    (2) request 모듈로 POST 요청 하기 

      가. 요청 객체를 미리 만들어준다. 

  >> req = Request('POST', url, data=payload, header=headers)

  >> prepped = req.prepare()

  

      나. 세션을 통하여 요청을 보낸다. 

  >> s = Session()

  >> res = s.send(prepped)

from requests import Request
from requests import Session
import pprint

s = Session()

headers = {
'X-Naver-Client-Id': 'YOUR Client ID',
'X-Naver-Client-Secret': 'YOUR Clinet Secret'
}

text = "yesterday all my trouble seemd so far away"

payload = {
'source': 'en',
'target': 'ko',
'text': text
}

url = 'https://openapi.naver.com/v1/papago/n2mt'

req = Request('POST', url, data=payload, headers=headers)
prepped = req.prepare()

res = s.send(prepped)

pprint.pprint(res.json())



5. 에러 처리 

  1. 에러 - AttributeError: module 'requests' has no attribute 'get'

    - 언제 발생 하는가?

      > python 파일 이름이 requests.py 일때 발생한다. 

      > 결론 파일 이름만 변경 해주면 됩니다.

D:\jk_git\python3\hello\venv\Scripts\python.exe D:/jk_git/python3/hello/requests.py
Traceback (most recent call last):
File "D:/jk_git/python3/hello/requests.py", line 3, in <module>
import requests
File "D:\jk_git\python3\hello\requests.py", line 5, in <module>
res = requests.get('https://api.github.com/users/chun4foryou')
AttributeError: module 'requests' has no attribute 'get'


728x90
반응형