22.01.02 FBV와 CBV가 뭘까 / django-cors-headers / serializer 공부

2022. 1. 3. 02:59작업/Django

DRF(django rest framework)에서는 요청한 request구분을 API 데코레이터를 통해 구분합니다. 

제 장고 프로젝트는 FBV(Function Based View) 이기 때문에, API 데코레이터인 @api_view(['GET'])으로 선언해 주어야 swagger에서 인식합니다.  저와 같은 FBV 기반 프로젝트는 @api_view 데코레이터를 사용하여 API 뷰를 짜야 하며, CBV 기반 프로젝트는 APIView 클래스를 사용하여  API 뷰를 짜야 합니다 :D 

왜 달라지는 게 없지 -> 전 포스팅에서 해결완료

 

jwt 인증으로 user앱 구현 시작

session 인증 과정에 대해서 간단히 설명하면 다음과 같습니다:
1.
클라이언트에서 사용자의 인증 정보를 서버에 전달합니다.
2.
서버는 인증을 처리한 뒤 해당 user에 대해 session을 생성합니다.
3.
session 정보는 서버에 저장되고, 클라이언트는 session id를 받아 브라우저에 저장합니다.
4.
클라이언트는 이후 이루어지는 요청에 session id를 이용합니다.
5.
서버는 전달 받은 session id를 이용하여 저장 중인 session 정보로 인증을 처리합니다.
6.
만약 session id가 만료되었을 경우에는 1번 과정부터 다시 이루어집니다.

 

JWT(Json Web Token)는 기존의 session만 사용하다가 CORS(Cross Origin resource sharing) 문제 때문에 주로 쓴다. 쿠키는 발행한 서버에섬나 유효하기 때문에 naver.com에서 발행한 쿠키를 daum.com에서는 쓰지 못한다.

그에 반해 토큰은 HTML Body 형태로 전송하기 때문에 다른 도메인에서 API를 호출해야 하는 서비스 구성에 유용하다.

즉, JSON 형태로 인증토큰을 만들어 통신할 때 쓰는 인증방식이다.

점 . 마다 나눠서 Encode를 한다. Header.Payload.VerifySignature

 

CORS란? (Crosss-Origin Resource Sharing)

웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다.

내가 장고에서 쓸 패키지는 django-cors-headers이다

 

serializer

serializer는 DB를 json으로 바꿀 때 사용되며, 반대로 json을 DB로 바꿀 때는 deserializer가 사용된다

https://han-py.tistory.com/356

자세한 개념정리

 

[django] DRF Serializer 기초 개념 정리

django를 내부의 로직에 따른 복잡한 데이터를 다른 framework에서도 이해할 수 있도록 변환이 필요할 것이다. 이러한 목적으로 나온 것이 Serializer이다. 따라서 serializer는 fontend와 장고를 연결할 때

han-py.tistory.com

 

import datetime

+ 아 저 serializer들은 views.py에서 해줘야되는 것 같다.