Open API 이용해서 나의 API 만들기 _naver 검색 API (뉴스)
먼저,
나의 API를 만들기 위해 ci cd 파이프라인 구축한다.
순서 : serverless로 파일 만들기 -> 로컬서버 체크 -> Docher 설치 -> 로컬서버 체크 -> AWS서버 배포체크 -> 깃 연동 -> 깃 액션즈로 자동화 -> 자동화로 배포된 AWS서버 체크 -> 개발 시작
내가 사용할 openAPI 인 Naver 검색 API 설명을 확인하고,
나의 API를 설계한다.
참고. https://msdev-st.tistory.com/158
1. 나의 API를 설계한다.
- Postman에서 OpenAPI에서 주는 정보를 참고하여 HTTP 메서드와 Params를 작성한다.
2. openAPI 에서 제공하는 정보로 검색 API가 제대로 작동하는지 Postman에서 확인한다.
- Postman에서 HTTP = GET, URL= OpenAPI 에서 주는 url, params에 쿼리파라미터 작성
- ^ 위에 처럼 작성하니 오류 발생
- 나의 애플리케이션을 만들 때 발급된 아이디 값과 시크릿 값을 입력해줘야 한다.
- 모두 입력해주면 오류 없이 실행되는 것을 확인할 수 있다.
3. 내가 만든 API에서 다른 Open API 요청하기
- API 호출하는 라이브러리 requests 인스톨 및 임포트 하기 (requirement.txt 에도 추가하는 것 잊지 말기)
$ pip install requests
- 코드 작성
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 개발' 카테고리의 다른 글
[API] JWT 토큰 있어도 되고, 없어도 되는 API 만들기 _ @jwt_required(optional=True) (0) | 2024.07.12 |
---|---|
[Restful API] Amazon Translate를 이용해서 API 만드는 파일 안에서 번역하기 (0) | 2024.05.30 |
[Restful API] Open API _naver 검색 API (뉴스) 사용하기 위한, 애플리케이션 등록 방법 및 API 설명 보는 법 (0) | 2024.05.29 |
[Restful API] 이미지 탐지 하는 API 개발 _ boto3를 이용해서 S3에 업로드 하기 (0) | 2024.05.28 |
[Restful API] 사진 / 파일 업로드 하는 API _ boto3를 이용해서 S3에 업로드 하기 (0) | 2024.05.28 |