Skip to content

240315 REST API

정훈 edited this page Mar 15, 2024 · 3 revisions

REST API


JWT

정의

개발

  1. OAuth2 인증 정의 api\v1\auth\__init__.py

  2. 사용자 인증 및 JWT 생성 api\v1\routers\auth.py

    • 패스워드 + 탈퇴/차단 + 이메일 인증여부 검증
    • AccessToken, RefreshToken 생성
      • RefreshToken은 Database에 저장
    • AccessToken, RefreshToken 반환
    • 사용자는 HEADER에 AccessToken을 전달
  3. JWT(Access Token) 사용 api\v1\routers\member.py

    • get_current_member() > oauth2_scheme를 통해서 Token 유효성을 검사함
    • 유효한 토큰이면 JWT decode를 통해 내부에 저장된 mb_id를 통해 현재 접속한 회원을 가져옴
  4. 토큰 재발급 api\v1\auth\__init__.py

    • Access Token 만료 시, 새 토큰을 발행받아야한다.
    • DB에 저장된 Refresh Token을 비교해서 Access Token을 재발급
    • Access Token은 유효기간이 짧기 때문에 자주 재발급 해야한다. AccessToken 만료에 따른 자동으로 재발급 되는 로직을 개발 중

회원(쪽지,스크랩,포인트 등)기능 및 게시판 API

  • Swagger UI

기존 코드 개선

  • 중복되는 로직을 어떻게 통합하면 좋을까?
    • 입출력 데이터 (Temaplte - Form/Template, API - Body/Json)
      • 별개의 router를 사용
    • 예외처리 (Temaplte - AlertException, API - HTTPException)
      • lib\member_lib.py > Service 클래스 추가 및 예외처리를 상속받는 클래스

고민해야할 내용

1. API로 무엇을 제공하면 좋을지?

2. API 구조

  • URL
  • 디렉토리 구조
    • models 디렉토리? 기존 models.py와 헷갈릴 여지..
  • 플러그인 형식

3. 입력/출력 데이터 형식

  • 기존 템플릿 형식과 다르게 제공해야할 내용
    • 이전/다음글
    • 파일 업로드 등...

4. 문서화