python で簡単に WEB アプリを作るには


他の WEB サイトと連携する WEB アプリを開発しているのだが、連携テストをする必要があった。

単体のリクエストでなく、WEB サイトに何度か GET/POST するようなシーケンスであり、cgi ではやりづらい。

python には、wsgiref などといったモジュールがあるが、まあまあ面倒だし、プロダクションレベルで使えるものではなさそうだ。apache や nginx といった WEB サーバなしで単体で WEB サーバとして動くようなモジュールが無いのかなあ、と思い検索してみた。

探してみると responder というフレームワークがあった。

これは私のニーズにマッチしていた。

  • uvicorn という WEB サーバが内蔵されていて、コードを実行すれば WEB サーバとして起動する
  • Flask-style route expression – URL の指定が簡単
  • フォーム値や、POST データの取得や、レスポンスの作成が簡単
  • テンプレートが使える

WEB アプリを作ったことがある人なら、Quick Start を見れば、一瞬でファンになることだろう。

DB アクセスに関してはORM は無いので必要なら何かモジュールを使うことになるだろう。今回は、簡単なテスト用アプリだったので、pymysql で十分だった。

他にも、既存の WSGI / ASGI アプリがマウントできるなど、試してみたい機能もある。

python で本格的な WEB アプリケーションを開発するなら、django のような Web Application Framework のほうがよいと思うが、軽量な WEB サーバや、バックエンドサーバなどを構築するのであれば、responder は非常に使い勝手が良い印象だ。

改造しようとしていたコードは多少はテストに役に立った python コードではあった。標準ライブラリには、wsgiref という、いまいち単体では使いづらいリファレンス実装しかなく、かといって、django といった機能が盛り沢山のフレームワークを使うほどでもない。python にこだわる必要もないよなあ、捨てて他のもので書き直すべきなのかなあ、と思ったが、そこまでする時間もなかったので、非常に助かった。

ありがとう、作者さん!

ドキュメント: https://responder.readthedocs.io/en/latest/