https://edder773.tistory.com/88
API를 사용하기 위한 초기 세팅은 위 글을 바탕으로 시작
API 사용하기
API
- Application Programming Interface로 프로그램들과 데이터베이스, 그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체
- Private API : 내부 API로, 기업이나 연구 단체 등에서 자체 제품과 운영 개선을 위해 단체 내부에서만 사용
- OPEN API : 접속하는 대상에 제약이 없는 개방형 API (여기서 다룰 내용)
📌시작 전에 준비해야 할 사항
- OPEN API를 사용하기 위한 API를 발급받아야 함. 이 글에선 금융상품통합비교공시의 API를 사용
금융상품통합비교공시 사이트에서 API를 발급받자. https://finlife.fss.or.kr/finlife/main/contents.do?menuNo=700029 - 이 글에서 진행하기 위한 세팅을 설치해주자. 아래 목록 리스트를 복사해서 메모장 파일에 복사 후 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을 출력받을 수 있다.
'Web > Django' 카테고리의 다른 글
[Django] RESTful API 정리 (0) | 2023.04.24 |
---|---|
[Django] REST framework를 이용한 Rest API 사용해보기 (0) | 2023.04.24 |
[Django] 댓글 권한 설정해보기 (0) | 2023.04.12 |
[Django] 게시판 권한 설정해보기 (0) | 2023.04.12 |
[Django] 게시판 댓글 기능 구현 해보기 - Part 3 (0) | 2023.04.12 |
댓글