3 ポイント 投稿者 musoftware 2021-10-02 | 1件のコメント | WhatsAppで共有

こんにちは! 私は現在、卒業制作(と就職活動…)を準備している学部生です。

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件のコメント

 
xguru 2021-10-03

しかも学部生なんですね。素晴らしいです。応援しています!!