Django-REST-Framework 에 대한 간단한 정리
-
DRF 란
Django에 RESTful API 개발에 도움을 주는 오픈소스 라이브러리
-
특장점
-
웹 브라우저 API는 범용성이 커서 개발을 쉽게 만들어줌
-
인증 정책을 위한 추가적인 패키지 이용에 도움 줌
-
serialize 기능 제공
-
문서화 및 커뮤니티 지원
-
-
serializer(직렬화)
Queryset(DB data)을 Nested 한 JSON 으로 매핑하는 class
-
기존 Django 와의 비교
- 기존의 Django를 이용한 웹 개발
Django ORM의 Queryset(DB data) 은 template로 넘겨지며 HTML로 렌더링돼 Response 로 보내짐
- DRF
serializer를 이용하여 DB data를 JSON으로 매핑하거나 그 역을 통해 RESTful 에 적합하게 API 작성 도와줌
-
ModelSerializer
serialize 내의 클래스
이미 models.py에 작성해둔 필드에 맞는 serializser를 만들 수 있도록 해주는 지름길
각 모델 인스턴스를 model_to_dict 과정 없이 쉽게 직렬화 시켜주며 코드길이 짧게 해줌
-
-
요청과 응답
-
요청(Request) 객체
기존 Django의 평범함 HttpRequest 객체를 확장하여 좀 더 유연하게 요청을 파싱 함
-
request.data
Request 객체의 핵심 속성
request.POST 와 비슷하지만 웹 API에 좀 더 적합
-
-
응답(Response) 객체
TempateResponse 타입
렌더링되지 않은 컨텐츠를 불러와 클라이언트에게 리턴할 컨텐츠 형태로 변환시킴
-
상태 코드
각 상태 코드에 대해 좀 더 명확한 식별자를 제공
기존의 View 에서의 상태 코드는 읽기에도 어려ㅇㅂ고 코드에 오류 발생 시 발견하기 어려운 문제 보완
-
API 뷰 래퍼
API 뷰를 작성하는데 사용할 수 있는 래퍼 제공
-
@api_view
데코레이터
함수 기반 뷰에서 사용
-
APIView
클래스
클래스 기반 뷰에서 사용
기능 재사용과 코드 중복(DRY) 막아줌
-
-
-
인증과 권한
웹 API 에서 사용자의 코드 조작에 대한 인증과 권한 제공
-
관계 & 하이퍼링크
요소의 사이의 관계를 다룸에 다양한 방법 제공
-
뷰셋과 라우터
View에 대해 추상화된 다양한 클래스 제공
URL 설정으로 HTTP 메서드에 따라 View 와 연결 제공