Flask

네이버의 Papago Open API 이용하기

yugyeong 2023. 1. 13. 16:15

네이버의 뉴스 파파고 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 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 으로 결과값 확인