API 개발/Restful API

Restful API : 네이버 검색 API 사용 방법 (requests 라이브러리 사용법)

신강희 2024. 5. 31. 01:24
728x90

< 네이버 검색 API 사용 방법 

(requests 라이브러리 사용법) >

 

# 유용한 오픈 API등을 이용해서 검색이나, 번역기능 같은것들은 구현할수 있다. 이번에는 네이버에서 제공하는 검색 기능 오픈 API를 사용해 보자.

- 우선 당연히 네이버 계정이 있어야하고 네이버 API를 등록해주어야 한다.

- 링크 : https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

 

# 우선 접속 후 가입 혹은 로그인 하고 등록을 해준다.

- 상단 메뉴바에서 Application > 애플리케이션 등록

 

# 검색 기능을 이용할거기 떄문에 검색을 선택하고 생성

 

# 등록 후엔 목록에 출력되고 ID를 누르고 들어가면 Client IDSecret값을 확인할수 있다.

- 코드에 필요하니 알아둬야 하는데 AWS와 다르게 언제든 들어가서 조회할수 있기때문에 따로 적어두고 관리하거나 할 필요는 없으나, 로그인하기 번거롭다면 따로 메모장에 작성하여 관리

 

# 자! 이제 사용 설명서를 봐보자!

- 요청 URL은 XML 혹은 JSON 형식으로 보내야 하고 (JSON 형식 사용)

- 프로토콜은 HTTPS에 GET 매서드 파라미터 명칭과 설명도 적혀있다. (필수 여부 항목은 필히 기재)

 

# 클라이언트 아이디와 시크릿을 요청하는 방법도 적혀져 있다.

- 확인하였으니 이따 저 변수명을 그대로 가져와서 사용

 

# 이제 설명서에서 설명해준 그대로 Postman에서 API를 먼저 설계하고 리퀘스트 생성하자

- 필수 파라미터인 query(검색어)만 넣고 나머지는 코드문으로 작성

- GET 메서드 사용

 

# 이제 Visual Studio Code를 실행하여 코드 작성

- 작성 전에 외부 API 사용을 위해서 호출하는 라이브러리 설치가 필요하다! 굉장히 많이 사용한다.

# 포스트맨의 SEND처럼 호출하는 라이브러리 굉장히 많이쓴다!!

pip install requests

 

# 뉴스 검색 기능을 사용할것이므로 resources 폴더 생성하여 news.py 파일을 만들어 작성

 
from flask import request
from flask_restful import Resource

# flask의 request와는 다른 라이브러리다!!
## 자주하는 실수이니 꼭 화인할것!!
import requests

from config import Config

class NewsSearchResource(Resource) :

    # 뉴스 찾는 API
    def get(self) :

        # 클라이언트가 보내준 데이터를 받기위해 쿼리 파라미터를 받는다. 그건 args에 들어있다. Params
        ## 검색어가 없으면 당연히 실패로 리스펀스 해줘야 하고,
        if 'query' not in request.args :
            return {'result' : 'fail',
                    'error' : '검색어는 필수입니다.'}, 400
       
        ## query에 들어간 검색어는 keyword라는 변수명으로 받는다.
        keyword = request.args['query']

        # 네이버의 API를 호출한다.
        ### 포스트맨의 SEND처럼 호출하는 라이브러리 굉장히 많이쓴다!! (설치 필요 pip install requests)
        ### import requests 하고 requirements.txt에도 적어준다!
        ### 파이썬 코드로 GET, POST, PUT, DELETE API를 처리해주는 라이브러리가 requests다.
       
        # 네이버가 제공하는 url
        # 파라미터값 설정
        params = {'query' : keyword ,
                  'disply' : 30,
                  'sort' : 'date'}
        # 헤더 설정 => client ID,Secret 값은 Config로 관리하자
        headers = {'X-Naver-Client-Id' : Config.X_NAVER_CLIENT_ID,
                   'X-Naver-Client-Secret' : Config.X_NAVER_CLIENT_SECRET}
       
        response = requests.get(url,
                        params= params,
                        headers= headers)
        # 응답으로부터 데이터를 json 으로 받는다.
        response = response.json()

        print(response)

        return {'result' : 'success' ,
                'items' : response['items'],
                'counrt' : len(response['items'])}

        return
 

 

# headers로 받아올 클라이언트 Id와 Secret 값은 Config.py 파일로 따로 작성

 
class Config :
    # 대문자로 작성하면 변경하면 안되는 상수로 표현하기 위해서 이렇게 작성
    X_NAVER_CLIENT_ID = '2vl5Elb1h8708w5QwtMyav'
    X_NAVER_CLIENT_SECRET = 'KQ2o88UnCi'
 

 

# 사전에 작성해 놓은 app.py에 경로 추가

 
import serverless_wsgi
from flask import Flask
from flask_restful import Api

from resources.news import NewsSearchResource

app = Flask(__name__)
api = Api(app)

api.add_resource( NewsSearchResource , '/news/search')

def handler(event, context) :
    return serverless_wsgi.handle_request(app, event, context)

if __name__ == '__main__':
    app.run()
 

 

# 특이 사항으로 서버 배포전에 requirements.txt에 requests 버전은 2.25.0으로 설정해줘야 문제 없이 배포된다.

 
Flask==1.1.4
Werkzeug==1.0.1
markupsafe==2.0.1

flask-restful

serverless-wsgi

# requests 버전을 2.25.0으로 사용해서 배포해야 문제없이 동작됨
requests==2.25.0
 

 

# 우선 Local 환경에서 테스트

- flask run 실행 후 Postman 실행

- 당연히 Postman에도 네이버 가이드와 동일하게 헤더 설정으로 클라이언트 아이디시크릿을 입력해 주어야 한다! Key 명칭네이버가 알려준 가이드데로 작성!

 

# 그러면 '뉴진스' 라는 검색어로 검색된 뉴스 결과가 출력된다.

 

★ 로컬 결과 확인하였고, 마지막으로 Docker 연동하여 서버 배포하거나 Git Actions로 바로 자동 배포!

 

다음 게시글로 계속~!

 

반응형