KMDb OPEN API 이용하기 2

Han07·2021년 3월 23일
0
post-thumbnail

저번 포스트에서 간단하게 open api를 사용해 보았다. 이번 포스트에서는 검색한 결과값만 보여주게 view를 수정해보겠다.

1. 인증키 분리하기

저번 포스트에서는 기본 url에 인증키를 포함시켰다.

url = "http://api.koreafilm.or.kr/openapi-data2/wisenut/search_api/search_json2.jsp?collection=kmdb_new2&ServiceKey=인증키"

하지만 이렇게 하면 git에 올릴 때 인증키가 유출되는 위험이 있다. SECRET_KEY, DATABASE 설정과 같이 파일을 분리해주도록 하겠다.

settings.py 파일이 있는 곳에 my_settings.py를 만든다.

my_settings.py

SECRET_KEY = 'secret_key'

DATABASES = {
    'default':
        {'ENGINE': 'django.db.backends.postgresql',
         'NAME': 'movie_api',
         'USER': 'root',
         'PASSWORD': 'password',
         'HOST': 'localhost',
         'PORT': '5432', }
}

SERVICE_KEY = url = "service_key"

movie/views.py

ServiceKey = my_settings.SERVICE_KEY

url = "http://api.koreafilm.or.kr/openapi-data2/wisenut/search_api/search_json2.jsp?collection=kmdb_new2"\
          + "&ServiceKey=" + ServiceKey

위와 같이 수정해준다.

2. 영화 제목으로 검색하기

movie/views.py

@csrf_exempt
@api_view(['POST'])
def search_movie(request):

    print(request.data['title'])

    ServiceKey = my_settings.SERVICE_KEY
    title = urllib.parse.quote(request.data['title'])

    url = "http://api.koreafilm.or.kr/openapi-data2/wisenut/search_api/search_json2.jsp?collection=kmdb_new2" \
          + "&ServiceKey=" + ServiceKey + "&query=" + title

    request = urllib.request.Request(url)
    response = urllib.request.urlopen(request)

    rescode = response.getcode()

    if rescode == 200:
        response_body = response.read()
        dict = json.loads(response_body.decode('utf-8'))
        return Response(dict, status=status.HTTP_200_OK)
    else:
        return Response(rescode, status=status.HTTP_400_BAD_REQUEST)

movie/urls.py

urlpatterns = [
    path('search/', views.search_movie),
]

postman으로 요청하면 응답이 잘 오는 것을 확인할 수 있다.

! 부제목이 있는 경우에는 아래와 같이 형식 오류가 난다.

      

0개의 댓글