네이버의 뉴스 파파고 open api 를 이용하는 방법이다.
https://developers.naver.com/docs/serviceapi/search/news/news.md#%EB%89%B4%EC%8A%A4
Papago 번역 - Papago API
Papago 번역 개요 Papago 번역 개요 Papago 번역은 Papago의 인공 신경망 기반 기계 번역 기술(NMT, Neural Machine Translation)로 텍스트를 번역한 결과를 반환하는 RESTful API입니다. Papago 번역으로 번역할 수 있
developers.naver.com
1. 네이버 API 에 애플리케이션 등록
네이버 api 를 이용하기 위해서는 먼저 애플리케이션 등록을 해야한다.

애플리케이션 등록 (API) 이용 신청은 아래처럼 하였다.
파이썬 코드를 이용하여서 개발할 것이기 때문에 환경은 web 으로 설정하였고, 로컬에서 코드를 돌려서 테스트 할 것이기 때문에 웹서비스 url 은 localhost:5000 으로 설정하였다.
- 사용 API : 검색
- 환경 : WEB
- 웹 서비스 URL : localhost:5000

필요한 항목들을 모두 설정하고 나면, 오픈 API 활용에 필요한 Client ID 와 Client Secret 키를 발급해준다.
Client ID 와 Client Secret 키는 노출되면 않도록 조심하여야 한다.

2. 코드 작성 전 네이버 API 사이트에서 필요한 데이터 확인
https://developers.naver.com/docs/papago/papago-nmt-overview.md
Papago 번역 - Papago API
Papago 번역 개요 Papago 번역 개요 Papago 번역은 Papago의 인공 신경망 기반 기계 번역 기술(NMT, Neural Machine Translation)로 텍스트를 번역한 결과를 반환하는 RESTful API입니다. Papago 번역으로 번역할 수 있
developers.naver.com
위 사이트에서 코드 작성에 필요한 데이터를 확인할 것이다.
먼저 우리가 필요한 데이터는 요청 URL 과 HTTP 메서드이다.
requests 라이브러리를 이용하여 POST 로 요청 URL 을 가져와야한다.
( Restful OPEN API 를 호출할 때 사용하는 라이브러리 : requests 라이브러리 )

필요한 데이터를 딕셔너리에 넣어서 요청해야 하기 때문에 파라미터도 잘 봐야한다.

헤더에 넣어야 하는 값은 Client-id 값과 Client-Secret 값 Content-Type 이다.

헤더에 클라이언트 아이디와 시크릿값말고 다른 값이 들어가는 경우도 있다.
여기서는 Content-Type 도 추가적으로 작성해주어야 한다.
어떤 데이터가 들어가는지 헷갈릴때는 요청 예를 확인하면 된다.
- H 가 헤더라는 의미이다.
- H 가 붙은 데이터들을 헤더값에 딕셔너리 형태로 넣어줘야한다.

3. Postman 설정
- 한국어를 중국어로 번역한 데이터를 가져올 것이다.
- 포스트맨에서 Body - raw - json 으로 설정하여서 작성한 데이터를 번역할 것이다.
- "content": "안녕하세요 파파고 api 를 이용한 중국어 번역 결과입니다."

4. 코드 작성
- Restful open Api 를 호출할 때 사용하는 라이브러리 => requests 라이브러리
- postman 의 body 에 작성한 json 형태의 데이터를 받아와야 하기 때문에 request.get_json() 을 한다.
- requests.get 으로 API 를 호출한다. ( 여기서 사용하는 requests 는 위에서 사용한 request 와 전혀 다른 함수이다. )
- 여기서 post 인 이유는 네이버에서 지정해준 HTTP 메서드가 POST 이였기 때문이다.
- 변수 req_data 와 headers 에 필요한 데이터를 딕셔너리 형태로 넣어준다.
- req_data : 네이버에서 지정해준 파라미터 값
- headers : 네이버에서 헤더값으로는 시크릿 아이디와 시크릿 키, Content-type 을 넣으라고 했기 때문에 세개의 값을 딕셔너리 형태로 넣어준다.
- 요청한 api 결과 데이터를 response 변수에 저장하였다. 우리가 원하는 데이터로 가져오기 위해서 .json() 을 해주어야한다.
- response.json()
- return 값으로는 가져오고자 하는 데이터를 억세스 하면 된다. ( 다른 값도 같이 리턴되는데, 번역한 데이터만 가져오도록 데이터 억세스 하였다 )
- 리턴되는 값이 json 형식이라서 데이터 억세스 하기가 힘들다면, json editor online 사이트를 이용하면 된다.
- https://jsoneditoronline.org/#right=local.hosere&left=local.moqomi
JSON Editor Online: JSON editor, JSON formatter, query JSON
You need to enable JavaScript to run this app. JSON Editor Online JSON Editor Online is a web-based tool to view, edit, format, repair, compare, query, transform, validate, and share your JSON data. About JSON Editor Online JSON Editor Online is a versatil
jsoneditoronline.org
class NaverPapagoResource(Resource) :
def post(self) :
# {"content": "안녕하세요"}
data = request.get_json()
# 네이버 파파고 api 호출
req_data = {"source" : "ko", "target" : "zh-CN", "text" : data['content']}
headers = {"X-Naver-Client-Id" : Config.NAVER_CLIENT_ID, "X-Naver-Client-Secret" : Config.NAVER_CLIENT_SECRET,
"Content-Type" : 'application/x-www-form-urlencoded; charset=UTF-8'}
response = requests.post('https://openapi.naver.com/v1/papago/n2mt', req_data, headers= headers)
response = response.json()
result_text = response['message']['result']['translatedText']
return {'result' : 'success', 'items' : result_text}, 200
5. postman 으로 결과값 확인

'Flask' 카테고리의 다른 글
| REST API / RESTful API 차이점 (0) | 2023.04.19 |
|---|---|
| 네이버의 뉴스 검색 Open API 이용하기 (0) | 2023.01.13 |
| 이미지 파일과 내용을 올리면 DB 에 저장하는 API (0) | 2023.01.13 |
| 종속성이 있는 라이브러리를 lambda layer 로 만드는 방법 (0) | 2023.01.12 |
| S3 에 저장돼 있는 이미지를 객체 탐지 하는 API - Amazon Rekognition (0) | 2023.01.12 |