[Django] Django-Rest-Framework(DRF)

황인용·2020년 9월 4일
0

Django

목록 보기
12/13

Django-Rest-Framework(DRF)

REST란

  • REpresentational State Transfer(REST)의 줄임말
  • http의 url과 method(GET, POST, PUT, DELETE등)을 사용하여 API 가독성을 높인 구조화된 시스템 아키텍처(framework)
  • JSON, XML과 같은 형식을 통해 데이터를 주고 받음
  • RESTful 아키텍쳐를 HTTP Method와 함께 사용해 웹, 데스크탑 앱, 스마트폰 어플들까지 하나의 API 서버를 생성할수 있음
  • 참고 : RESTful API

DRF(Django REST Framework)란

  • DRF(Django Rest Framework)란 Django 안에서 RESTful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리

DRF(Django REST Framework)를 사용하는 이유

  • 웹 브라우저 API는 범용성이 크다. 개발을 쉽게 만들어준다.
  • 인증 정책에 OAuth1, OAuth2를 위한 추가적인 패키지가 추가되어 있는 경우
  • Serializer(시리얼라이저) 기능을 제공해준다.
    (Serializer란?: Database data => JSON,XML 변환)
  • 문서화 및 커뮤니티 지원이 잘 되어 있다.

Serializer(시리얼라이저)란

  • 기존 django를 이용한 웹 개발에서 Django ORM의 QuerySet은 Djangodml Template로 넘겨지며 HTML로 랜더링 후 Response로 보내짐
  • 하지만 RESTful API에서는 JSON, XML등의 데이터 형식으로 보내야하는 과정이 필요.
  • Serializer는 DRF의 기능중 하나로, 말그대로 직렬화 하는 클래스.
  • 즉, 사용자의 DB안에서 데이터를 가져올 때, Python Django Framework가 사용가능한 JSON 또는 Dictionary형태로 직렬 및 변환.
  • 역직렬화도 가능

serializers.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

python manage.py shell

>>> from user.models import User
>>> from user.serializers import UserSerializer
>>> queryset = User(email="user@user.user", name="user", sex="Female", profile_image="user.png")
>>> queryset
<User: User object (1)>

>>> user_serializer = UserSerializer(queryset)
>>> user_serializer.data
{
    "email" : "user@user.user",
    "name" : "user",
    "sex" : "male",
    "profile_image" : "https://abc.com/user.png"
}
profile
dev_pang의 pang.log

0개의 댓글