Frost - Flaskベースの複数の組み込み機能を備えたREST APIサーバーテンプレート
(github.com)こんにちは! 私は現在、卒業制作(と就職活動…)を準備している学部生です。
FlaskでREST APIサーバーを書いている中で、複数のプロジェクトに共通して入る機能を含んだテンプレートがあると良いのではと思い、関連プロジェクトを作りました。
現在ある機能は以下のとおりです。
JWTによる会員登録、ログインおよび認証(Refresh、Accessトークン認証)
......- Flask-Admin認証(AdminトークンCookieの自動発行および認証)
......- 手動トークン無効化(特定のログイン済みユーザーのトークン無効化)
......- メールアドレス認証と、メールを使ったパスワード初期化(メールトークン)
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はメンテナンスされていない状態で、Flask-RESTXは私の望んでいた使い方ではありませんでした。
また、ログインや認証まわりについては、Flask-Loginはセッションベースで、Flask-JWT-Extendedの存在を知らなかったので(…)自分で実装することになりました。
何しろ学部生ですし、しかも急いで作ったためコメントも不足していてコードもきれいではありませんが、このような形でAPIを定義できるというPoCとして見ていただけるとありがたいです!
(実は少し前に一度投稿したのですが、機能の部分でインデント用の空白がすべて消えてしまっていて(…)削除して再投稿しました。ご理解いただけると幸いです!)
1件のコメント
しかも学部生なんですね。素晴らしいです。応援しています!!