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"
}