본문 바로가기
백엔드/API

[API] 네이버 API 이용하기

by eyoo 2022. 6. 27.

네이버 API중 하나인 파파고를 사용해보자.

 

먼저 NaverDevlelopers에서 임의의 어플 이름과 안드로이드의 앱 패키지 이름으로 등록한다.

# 형식예시: com.example.mynavermap

 

 

 

등록이 완료되면 클라이언트 아이디와 클라이언트 시크릿을 제공한다.

 

 

그 밑에는 사용법을 알려준다.

 

curl "https://openapi.naver.com/v1/papago/n2mt" \  # URL
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \  # 헤더의 키,벨류
-H "X-Naver-Client-Id: 클라이언트 아이디" \  # 헤더의 키,벨류
-H "X-Naver-Client-Secret: 클라이언트 시크릿" \  # 헤더의 키,벨류
-d "source=ko&target=en&text=만나서 반갑습니다." -v  # 바디의 데이터

 

API 사용량도 보여준다.

 

 

 

Application 메뉴를 통해 내 애플리케이션을 확인할수있다.

 

 

 

외부 API를 사용하기 위해 requests를 설치한다.

 

pip install requests

 

 

파파고 API 매뉴얼: https://developers.naver.com/docs/papago/papago-nmt-api-reference.md

 

import requests
from config import Config

URL = "https://openapi.naver.com/v1/papago/n2mt"


headers = {"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
            "X-Naver-Client-Id":Config.NAVER_CLIENT_ID,
            "X-Naver-Client-Secret":Config.NAVER_CLIENT_SECRET}

data = {'source':'ko',
        'target':'en',
        'text':'만나서 반갑습니다.'}

res = requests.post(URL, data, headers= headers)

print(res.json())

out:

{'message': {'result': {'srcLangType': 'ko', 'tarLangType': 'en', 'translatedText': 'Good to meet you.',
'engineType': 'PRETRANS', 'pivot': None, 'dict': None, 'tarDict': None},
'@type': 'response', '@service': 'naverservice.nmt.proxy', '@version': '1.0.0'}}

# res.json()['message']['result']['translatedText'] 로 번역된 문장만을 가져올수있다.

 

 

포스트맨으로도 테스트 할수있다.

 

class NaverPapagoResource(Resource):
    def get(self):
        text = request.args['text']

        #네이버 파파고 API 호출
        headers = {"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
            "X-Naver-Client-Id":Config.NAVER_CLIENT_ID,
            "X-Naver-Client-Secret":Config.NAVER_CLIENT_SECRET}

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

        res = requests.post(Config.NAVER_PAPAGO_URL, data, headers= headers)
        print(type(res.json()))
        print(res.json()['message']['result']['translatedText'])
        translated = res.json()['message']['result']['translatedText']

        return {'result':translated},200

 

res.request   # 내가 보낸 request    객체에 접근가능
res.status_code   # 응답코드
res.raise_for_status()   # 200 OK 코드가 아닌경우 에러 발동
res.json()   # json response일 경우 딕셔너리 타입으로 바로 변환

 

 

 

 

댓글