멋쟁이 사자처럼 10기/세션

2022/06/21 <DRF 세션>

cha2y0ung 2022. 7. 15. 00:43
728x90

1. DRF 란??

django에서 웹페이지를 구동하는 방식

 

원래 template.html에서 사용자가 입력한 정보를 전달해주고 view.py에서 가공한 데이터를 전달하는 방식이라면

사용자가 입력한 정보를 전달하는 프레임워크가 React라면..!!

 

django rest famework : django 안에서 restful API 서버를 쉽게 구축할수 있도록 해주는 오픈소스 라이브러리

 

Restful API??

  • API: 응용프로그램 데이터를 주고받는 규약
  • REST API : Json 형태로 CRUD 데이터를 주고받는 규약
  • RESTful : REST 방식을 따라서 개발하는 것

웹이 Json 형태로 CRUD 데이터를 주고받도록 ㄱ구현하기!!

 

Django와 DRF 차이는 직렬화(serialization 여부) 차이

 

2. Serialization

query set, 모델 인스턴스 등의 복잡한 데이터를 쉽게 변환가능한 데이터로 변환시키는 것

 

3. Request & Responses

request.data -> request.POST와 비슷한 역할

 

request.POST : 데이터(Form) 메소드(POST)

request.data : 데이터(임의의 데이터) 메소드(POST, PUT, PATCH)

 

*PUT : 리소스의 모든 것을 업데이트, PATCH : 리소스의 일부를 업데이트

 

Response objects

  • 주요기능 : content negotiations
  • 사용자에게 반환하기에 적절한 content 종류를 결정
  • return Response(data) -> 요청한 content 종류를 렌더링

상태코드 : HTTP 요청에 대한 상태를 표시하는 코드가 존재하면 명확하게 읽을 수 있다

ex) HTTP_400_BAD_REQUEST

 

API wrapper

다른 API로 요청을 전송하는 중간다리 API

토큰이 필요하고 외부 서버랑 통신이 필요할때 사용한다

  • @api_view : 함수기반 뷰(FBV)를 작성할때 사용
  • APIView 클래스 : 클래스기반 뷰(CBV)를 작성할때 사용

4. CBV

코드의 재사용성이 높고 DRY(don't repeat yourself)하게 만들 수 있다

 

mixins

메소드를 포함하고 있는 하나의 class

mixins에 포함되어 있는 메소드를 다른 클래스가 사용할때 상속받을 필요가 없음

일반적인 class -> 다른 클래스에 사용될 때 상속되어야함

mixin -> 다른 클래스에 사용될 때 상속필요없음