장고(Django) stateful/stateless/쿠키/토큰
stateful / stateless
stateful: server side 에 client와 server의 연속된 동작 상태정보를 저장하는 형태
쉽게 말해, 서버에 사용자 정보 저장
stateless: server side 에 client와 server의 연속된 동작 상태정보를 저장하지 않는 형태
서버에 사용자 정보 저장X
쿠키방식 / 토큰방식 차이
- 면접 단골 -
- 서버 기반 인증 (Cookie-Session)
전통적 방식. HTTP가 stateless 해서 탄생함
따라서 장점이자 단점이 stateful 하다는 것이다 (서버 부하 가능성)

- 토큰 기반 인증 (oAuth 2.0, JWT)
stateless 한 방식이다. 서버 부하를 덩 수 있다.

1. oAuth
Access Token, Refresh Token을 이용
Authorization Server에서 인증+권한 관리를 하고 Resource Server에서는 자원에 대한 관리만 한다.
장점: 보안성 좋다. (Access Token을 지속적으로 발급받아야 함)
단점: 필요한 Resource가 너무 많다. Access Token이 만료될 때마다 새롭게 발급하는 과정에서 생기는 HTTP 요청이 잦다.
2. JWT (JSON Web Token)
토큰 자체가 data를 가지고 있다.
장점: 토큰 기반 인증의 장점 (서버 부하 덜 수 있음)
단점: 보내는 데이터 양이 크다. 토큰 자체를 탈취하면 ID, PW 자체를 알 수 있다. (따라서 HTTPS 통신을 권장한다.)
JWT를 이용해서 프로젝트를 진행했다.
rest_framework_simplejwt 를 install하고 공식문서에서 하라는대로 추가해준다.
JWT에서 계정정보를 확인해 볼 수 있다. JWT web token 사이트에서 조회할 수 있고, 조회방법은 포스트맨들 통해 "refresh"키와 "access"키를 확인 후 붙여넣어주면 확인 가능하다.

위 사진처럼 POST로 users/api/token/ 을 send 해주면 된다. Body 에서 raw, JSON 바꿔주고, 가입되어있는 username과 password를 입력하면 token key값이 나온다.

signature 부분에 settings.py의 SECRET_KEY를 붙여넣어주면 valid로 바뀐다.
secret_key는 나중에 꼭 숨겨둬야 한다.
name= : test코드 혹은 template에서 사용
name없을 경우 : /api/todo/
name있을 셩우 : {{ url todo }}
get은 1개만 받고 filter는 여러개를 받을 수 있음
get은 object 가져오고
filter는 queryset 가져옴. queryset은 object의 집합이다.
get : "<Todo:3>"
filter : ["<Todo:3>"]
팀프로젝트 진행 시
1. python 버전 맞추기
2. 정렬 extension 맞추기
3. 사전계획(API, ERD, model 대략짜기) - 역할 분담 쉬워짐