본문 바로가기
Restful API

[Restful API] 네이버 Open API 사용해보기

by coding_su 2023. 1. 13.

📝네이버의 Open API 사용해보기

네이버 오픈 API 목록을 보고 사용할 API를 찾으면 된다(https://developers.naver.com/products/intro/plan/plan.md)

우선 네이버의 뉴스검색 API와 파파고(Papago) API를 사용해보겠다

사용하기 전 먼저 네이버 개발자 센터에서 애플리케이션을 등록하고 클라이언트 아이디와 클라이언트 시크릿을 발급받아야한다

※ 발급 받은 아이디와 클라이언트 시크릿은 컨픽 파일에 저장해 사용하기

 

해당 API 페이지에 들어가 HTTP 메서드를 확인하여 포스트맨에 경로를 셋팅해주고

Visual Studio Code에 들어가 작업해줬다

값은 사용할 API의 홈페이지의 요청 URL, 파라미터, 참고 사항, 요청 예, 응답, 오류 코드 등 확인해서 입력할 것

※ Restful Open API를 호출할때 사용하는 라이브러리인 requests를 flask의 request 라이브러리와 헷갈리지 말것

class NaverSearchResource(Resource) :
    # 네이버 뉴스를 가져오는 API
    def get(self) :
        keyword = request.args.get('keyword')
        limit = request.args.get('limit')

        # 네이버 API를 호출
        # Restful Open API를 호출할때 사용하는 라이브러리 > requests 라이브러리
		
        data = {'query' : keyword, 'display' : limit}
        headers = {'X-Naver-Client-Id' : Config.NAVER_CLIENT_ID,
        'X-Naver-Client-Secret' : Config.NAVER_CLIENT_SECRET}

		# requests.사용할 메서드(요청URL, 보낼 데이터, 헤더값)
        response = requests.get('https://openapi.naver.com/v1/search/news.json', data, headers= headers)
        response = response.json()
        # print(response)
        
        # 뉴스 제목만 가져오기
        title_list = []
        for row in response['items'] :
            title_list.append(row['title'])

        return {'result' : 'success', 'items' : title_list}, 200

class NaverPapagoResource(Resource) :
    # 네이버 파파고 한국어 > 중국어 번역 API
    def post(self) :
        # {"content" : "안녕하세요~"}
        data = request.get_json()

        # 네이버 파파고 api 호출
        req_data = {'source' : 'ko', 'target' : 'zh-CN', 'text' : data['content']}
        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}

		# requests.사용할 메서드(요청URL, 보낼 데이터, 헤더값)
        response = requests.post('https://openapi.naver.com/v1/papago/n2mt', req_data, headers= headers)
        response = response.json()
        # print(response)

        # 번역된 결과 값 가져오기
        result_text = response['message']['result']['translatedText']

        return {'result' : 'success', 'result_text' : result_text}, 200

댓글