Pythonで使用してSanicを用いてRESTful APIを作成する

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が必要なことがわかります。

コメント

タイトルとURLをコピーしました