안녕하세요! 저는 현재 졸업작품(과 취직...)을 준비하는 학부생입니다.
Flask로 REST API 서버를 작성하면서, 여러 프로젝트에 공통적으로 들어가는 기능들이 포함된 템플릿이 있으면 좋겠다는 생각에 관련된 프로젝트를 만들었습니다.
현재 있는 기능은 아래와 같습니다.
# JWT 회원가입, 로그인 및 인증 (Refresh, Access 토큰 인증)
......- Flask-Admin 인증 (Admin 토큰 쿠키 자동 발급 및 인증)
......- 수동 토큰 무효화 (특정 로그인한 유저의 토큰 무효화)
......- 이메일 주소 인증과 이메일을 사용한 비밀번호 초기화 (이메일 토큰)
# Python의 docstring과 decorator를 통한 기능 사용
......- 로그인 필수 및 로그인 권장 라우트 정의
......- 요청 파라미터 정의 및 제한(Required/Optional field 관리)
............- Header/Body/Query 입력 검증
......- 라우트 설명 / 요청 파라미터 / 해당 라우트에서 가능한 응답 문서화
# 문서 내보내기
......- OpenAPI 3.0 YAML 문서로 내보내기
......- ER Diagram 생성 기능(.dot 출력)
이 중 로그인(JWT 인증)과 OpenAPI 3 문서 생성 기능쪽은 PyJWT와 apispec를 사용하여 직접 작성했습니다.
OpenAPI 3 문서 생성 기능쪽은 Flask-RESTful이나 Flask-RESTplus는 unmaintained 상태이고, Flask-RESTX는 제가 원하는 사용법이 아니었습니다.
또, 로그인이나 인증쪽은 Flask-Login은 세션 기반이고 Flask-JWT-Extended는 있는줄 몰라서(...) 직접 작성하게 됐습니다.
아무려도 학부생인데다가 급하게 만들어서 주석도 부족하고 코드도 깨끗하지 않지만, 이런 식으로 API를 정의할 수 있겠다는 PoC로서 봐주시면 감사하겠습니다!
(사실 조금 전에 한번 올렸는데, 기능 쪽에서 들여쓰기 공백이 전부 날아가버려서(...) 지우고 다시 올립니다. 양해 부탁드립니다!)