# Show GN: Frost - Flask 기반의 여러 Built-In 기능이 있는 REST API 서버 템플릿

> Clean Markdown view of GeekNews topic #5125. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=5125](https://news.hada.io/topic?id=5125)
- GeekNews Markdown: [https://news.hada.io/topic/5125.md](https://news.hada.io/topic/5125.md)
- Type: show
- Author: [musoftware](https://news.hada.io/@musoftware)
- Published: 2021-10-02T16:42:51+09:00
- Updated: 2021-10-02T16:42:51+09:00
- Original source: [github.com](https://github.com/MU-Software/frost)
- Points: 3
- Comments: 1

## Topic Body

안녕하세요! 저는 현재 졸업작품(과 취직...)을 준비하는 학부생입니다.

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로서 봐주시면 감사하겠습니다!

(사실 조금 전에 한번 올렸는데, 기능 쪽에서 들여쓰기 공백이 전부 날아가버려서(...) 지우고 다시 올립니다. 양해 부탁드립니다!)

## Comments



### Comment 7117

- Author: xguru
- Created: 2021-10-03T08:07:33+09:00
- Points: 2

와 학부생이신데 멋지네요. 응원합니다!!
