반응형
https://edder773.tistory.com/212
해당 Rest API를 사용하기 위한 초기 세팅은 위 글을 바탕으로 시작
REST API 사용하기
REST
- Representational State Tranger로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미
- HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD 연산을 적용하는 것
- 지금은 JSON을 통해서 자원을 표현할 것
Serialization
- 직렬화과정으로 여러 시스템에서 활용하기 위해 데이터 구조나 객체 상태를 나중에 재구성할 수 있는 포맷으로 변환하는 과정
- Django의 serialize()는 복잡한 데이터를 JSON, XML 등의 유형으로 쉽게 변환할 수 있는 python 데이터 타입으로 변환
먼저, serializer를 설정해 주기 전에, models.py에서 내가 필요한 데이터를 설정해 주자.
위에 OPEN API를 통해서 데이터를 가져올 것이기에 models.py에서 내가 필요한 데이터를 가져오도록 Products 클래스를 정의하자.
# model.py
from django.db import models
class Products(models.Model):
fin_prdt_cd = models.TextField(unique=True)
kor_co_nm = models.TextField()
fin_prdt_nm = models.TextField()
etc_note = models.TextField()
join_deny = models.IntegerField()
join_member = models.TextField()
join_way = models.TextField()
spcl_cnd = models.TextField()
모델을 추가했으니 꼭 DB에 반영하기 위해 migrate를 진행해 주자
python manage.py makemigrations
python manage.py migrate
이제 ModelForm과 유사한 ModelSerializer 구조를 사용하자. 이를 구성하기 위해서 serializer.py를 만들어서 다음과 같이 지정하자.
from rest_framework import serializers
from .models import Products
class ProductsSerializer(serializers.ModelSerializer):
class Meta:
model = Products
fields = '__all__'
이제 views.py에서 이를 활용해 데이터를 가져와보자.
#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
from .serializers import ProductsSerializer
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']
product_serializer = ProductsSerializer(products_data, many=True)
return Response(product_serializer.data)
ModelSerializer의 경우 Queryset 또는 객체 모록을 serialize 하려면 many=True 설정을 해줘야 한다.
다음과 같이 작성했다면, 서버가 정상적으로 작동하는지 확인해 보자.
다음과 같이 원하는 데이터만 정상적으로 추출하도록 구성할 수 있다.
반응형
'개발 > Django' 카테고리의 다른 글
[Django] RESTful API 정리 (0) | 2023.04.24 |
---|---|
[Django] OPEN API를 이용하여 값 출력해보기 (0) | 2023.04.24 |
[Django] 댓글 권한 설정해보기 (0) | 2023.04.12 |
[Django] 게시판 권한 설정해보기 (0) | 2023.04.12 |
[Django] 게시판 댓글 기능 구현 해보기 - Part 3 (0) | 2023.04.12 |
댓글