본문 바로가기
Web/Django

[Django] OPEN API를 이용하여 값 출력해보기

by char_lie 2023. 4. 24.
반응형

https://edder773.tistory.com/88

 

[Django] 기초 무작정 시작하기 - Part 1

Django 기초부터 무작정 시작하기 Django를 하면서 처음 사용하는 것부터 시작해서 하나씩 개념 정리하기 위해 작성하는 포스팅 아래를 따라 하기 위해선 기본적으로 Git과 Visual Code가 설치가 되어

edder773.tistory.com

API를 사용하기 위한 초기 세팅은 위 글을 바탕으로 시작


API 사용하기
API
- Application Programming Interface로 프로그램들과 데이터베이스, 그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체
- Private API : 내부 API로, 기업이나 연구 단체 등에서 자체 제품과 운영 개선을 위해 단체 내부에서만 사용
- OPEN API : 접속하는 대상에 제약이 없는 개방형 API (여기서 다룰 내용)

📌시작 전에 준비해야 할 사항

  1. OPEN API를 사용하기 위한 API를 발급받아야 함. 이 글에선 금융상품통합비교공시의 API를 사용
    금융상품통합비교공시 사이트에서 API를 발급받자. https://finlife.fss.or.kr/finlife/main/contents.do?menuNo=700029
  2. 이 글에서 진행하기 위한 세팅을 설치해주자. 아래 목록 리스트를 복사해서 메모장 파일에 복사 후 requirements.txt로 저장해서 설치하자
charset-normalizer==3.0.1
Django==3.2.13
django-environ==0.9.0
djangorestframework==3.14.0
requests==2.28.2
sqlparse==0.4.3
urllib3==1.26.14

 

pip install -r requirements.txt

위에서 API를 받고, requirements까지 설치를 완료했다면 API를 사용하기 위한 세팅을 해주자.

직접적으로 API를 사용해도 되지만(개인 장치) github 등을 통해 공유할 경우 발급받은 API가 노출이 된다. 노출되지 않게 설정하기 위해서 .env를 활용해서 환경 변수 관리를 통해 동작할 수 있게 구성해 주자

먼저 .env 파일을 생성해 주자.

반응형

.env 파일에 API KEY를 등록하자

API_KEY='내가 발급받은 API'

다음과 같은 형태로 입력해 주고, setting.py에 환경변수를 사용하기 위해 다음과 같은 코드를 추가해서 사용할 수 있게 구성하자.

import os
import environ

# 환경변수를 불러올 수 있는 상태로 설정
env = environ.Env(DEBUG=(bool, True))

# 읽어올 환경 변수 파일을 지정
environ.Env.read_env(
  env_file = os.path.join(BASE_DIR, '.env')
)

# 설정한 변수를 읽어옴
API_KEY = env('API_KEY')

여기까지 설정했다면, import setting을 통해 API를 불러올 수 있다. views.py에 사용할 API_KEY를 지정해 주면 이후에 불러올 때 바로 쓸 수 있다.

from django.conf import settings

API_KEY = settings.API_KEY

또한 setting에 restframework를 사용하기 위해서 app 등록을 해줘야 사용할 수 있으니 app 등록을 하자.

이제 기본 세팅은 완료했으니 API 데이터를 받아오기 위해보자. 먼저 urls.py에서 path를 지정해 주자

from django.urls import path
from . import views

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

이제 API를 가져와서 보기 위해 views.py에서 함수를 정의해 주자.

from django.shortcuts import get_object_or_404, get_list_or_404
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from django.conf import settings
import requests, json

API_KEY = settings.API_KEY

@api_view(['GET'])
def products(request):
    url = 'http://finlife.fss.or.kr/finlifeapi/depositProductsSearch.json'
    params = {
        'auth': API_KEY,
        'topFinGrpNo': '020000',
        'pageNo': '1'
    }
    response = requests.get(url, params=params)
    products_data = response.json()['result']['baseList']
    
    return Response(products_data)

위와 같은 내용으로 API를 가져오면 된다. 여기서 JSON파일 내용 중 result의 baseList만 가져오게 작성해 주었다.

이렇게 작성하고 서버를 실행해 주고 articles/products/ 경로로 들어가면

다음과 같이 정상적으로 JSON을 출력받을 수 있다.

반응형

댓글