Pythonで使用してSanicを用いてRESTful APIを作成してみます。
今回は高速に動作するWebサーバー及びWebフレームワーク「Sanic」を用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■Sanicを用いてRESTful APIを作成する
では、早速Sanicを用いてRESTful APIを作成しますので、スクリプトを書いていきます。
■コード
from sanic import Sanic,response app = Sanic(__name__) test_db = [ { "name":"test1", "email":"a1@test.com", "name":[ "test01", "test02", "test03", "test04", ] } ] @app.get("/") async def get_data(request): return response.json(test_db) if __name__ == "__main__": app.run(host="0.0.0.0",port=8000,debug=True,auto_reload=True)
まずは「from sanic import Sanic」でSanicを呼び出します。appという変数を定義し、その中に「Sanic(__name__)」を格納します。これでSanicアプリケーションのインスタンスの作成は完了です。
次に、test_dbという変数を定義し、その中にデータベースを作成していきます。データベース内のデータを辞書形式で格納します。
格納後、getメソッドを作成します。なお、返されるタイプはHTTPResponseでなければならないので、response.json()を用いて、test_dbのデータベースをJSON形式データとして返すようにします。
そして、Sanicアプリケーションを実行するために、app.run()を用います。
■実行・検証
このスクリプトを「test_app1.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、「Sanic v21.12.1 Goin’ Fast @ http://127.0.0.1:8000」といったメッセージが出力されます。さらに「Sanic is running in PRODUCTION mode. 」と出力されており、SanicがPRODUCTIONモードで実行されます。この状態でコマンドプロンプトは起動したまま、Webブラウザを起動し、アドレスバーに「http://127.0.0.1:8000」を入力しアクセスします。
アクセスすると、今回作成したRESTful APIからデータベースの情報が返され、それを出力させることができました。
なお、getメソッドを作成する場合に、response.json()を用いずに、test_dbのデータベースを返すようにすると、「Invalid response type [{‘name’: [‘test01’, ‘test02’, ‘test03’, ‘test04’], ‘email’: ‘a1@test.com’}] (need HTTPResponse)」と出力され、HTTPResponseが必要なことがわかります。
コメント