requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋?
requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ HTTP ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด ๋ณต์กํ ์์ ์ ๋จ์ํํ์ฌ
์ฌ์ฉ์๊ฐ HTTP ์์ฒญ์ ๋ณด๋ด๋ ๊ณผ์ ์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
vscode cmd์ฐฝ์์ ์ ๋ ฅํ์ฌ ์ค์นํ ์ ์๋ค.
pip install requests
์ฅ์
(1) ์ธ์ ์ง์
- requests.Session ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์์ฒญ ๊ฐ์ ์ง์์ ์ธ ์ธ์ ์ ์ ์งํ ์ ์๋ค.
- ์ฟ ํค์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
(2) ์ฟ ํค, ํค๋, ํ๋ผ๋ฏธํฐ ์ง์
- ์์ฒญ ์ ์ฟ ํค, ํค๋, URL ํ๋ผ๋ฏธํฐ ๋ฑ์ ์ฝ๊ฒ ์ค์ ํ ์ ์๋ค.
(3) ํ์ผ ์ ๋ก๋ ๋ฐ ๋ค์ด๋ก๋
- ํ์ผ ์ ๋ก๋ ๋ฐ ๋ค์ด๋ก๋ ์์ ์ ๊ฐ๋จํ๊ฒ ์ํํ ์ ์๋ค.
(4) JSON ์๋ต ์ฒ๋ฆฌ
- JSON ํ์์ ์๋ต์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
from flask import request
from flask_restful import Resource
# API ์์ฒญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import requests
# ๋ด๊ฐ ๋ง๋ ๋ณด์ ๊ฐ class
from config import Config
class NewSearchResource(Resource) :
def get(self) :
# params ์ ์ฟผ๋ฆฌ ๊ฐ์ด ์์ผ๋ฉด ๋ฆฌํด
if 'query' not in request.args :
return {"result":"fail", "error":"๊ฒ์์ด๋ ํ์์
๋๋ค."}, 400
# params์ ์๋ ๊ฐ ๋ณ์๋ก ์ ์ฅ (๋์
๋๋ฆฌ์ฌ์ .get() ๋ ๊ฐ๋ฅํ๋ค.)
keyword = request.args.get('query')
# ๋ค์ด๋ฒ API ํธ์ถํ๋ค.
# API ํธ์ถํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ requests
# ํ์ด์ฌ ์ฝ๋๋ก GET, POST, PUT, DELETE API๋ฅผ
# ์ฒ๋ฆฌํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ requests ๋ค.
# openAPI ์์ ์ ๊ณตํ๋ url, params
# params ์์๋ ๋ด๊ฐ ์ค์ ํ ๊ฐ + ์ต์
๋ค
# openAPI ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์์ด๋ ๊ฐ ๊ณผ ์ํฌ๋ฆฟ ๊ฐ ์
๋ ฅ
url = 'https://openapi.naver.com/v1/search/news.json'
params = {'query' : keyword,
'display' : 30,
'sort' : 'date'}
headers = {'X-Naver-Client-Id' : Config.X_NAVER_CLIENT_ID,
'X-Naver-Client-Secret' : Config.X_NAVER_CLIENT_SECRET}
# ๊ฐ์ requests์ get()ํจ์ ์ฌ์ฉํด์ ๋ฐ์์ฃผ๊ธฐ
response = requests.get( url, params= params, headers= headers)
# ์๋ต์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก ๋ฐ๋๋ค.
# ํฌ์คํธ๋งจ ์๋ต ๋ฐ๋์ JSON์ผ๋ก ๋์ด์์ด์ ๊ฐ๋ฅํ๋ค.
response = response.json()
print( response )
return {"result" : "success",
"items" : response['items'],
"count" : len(response['items'])}
'RestFul API' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
instargram ์ฌ์ง ํฌ์คํ API (2) ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ๋ก๊ทธ์์ API (0) | 2024.05.30 |
---|---|
instargram ์ฌ์ง ํฌ์คํ API (1) ๊ธฐ๋ณธ ์ธํ (Setting) ํ๊ธฐ (0) | 2024.05.30 |
๊ด๋ จ ํค์๋๊ฐ ํฌํจ๋ ๋ด์ค ๊ฒ์ API ๋ง๋ค๊ธฐ (0) | 2024.05.29 |
RestFul API๋ฅผ Serverless Framework๋ก ์ฐ๊ฒฐํ๊ธฐ (0) | 2024.05.23 |
JWT ์ธ์ฆ ํ ํฐ์ ๋ก๊ทธ์ธ ๋ง๋ฃ ์๊ฐ ์ค์ ํ๊ธฐ (0) | 2024.05.22 |