[python]Flaskでapiを作る基本

必要なライブラリは

from flask import Flask
from flask_restful import Api, Resource

必須コードは以下。app.run内のdebugはサーバーを自動で更新してくれたりするのでTrueにしておくとテスト中便利。テストが終わったらFalseにするのをお忘れなく。

ここまで書いたpythonファイルを実行するとローカルサーバーが出来る。
ローカルサーバーのurlはhttp://127.0.0.1:5000/

app = Flask(__name__)
api = Api(app)
if __name__ == "__main__":
    # debug need to be false when it in product mode
    app.run(debug=True)

Apiを作るのは以下のコード。
Apiの名前のclassを作りその中で各リクエストに対する動作を定義する。
def get(self)でgetリクエストの定義、getをpostにするとpostリクエストの定義。
リクエストからの返答はreturnで定義。returnはjson形式で設定。

api.add_resourceで上記のclassをapiにする。
add_resourceの丸括弧内には2つの引数。1つ目はapiにするclass名を入れる。2つ目はapiを呼び出すためのルート。

class HelloWorld(Resource):
    def get(self):
        return {"data": "Hello World"}

api.add_resource(HelloWorld, "/helloworld")

ローカルサーバーのurlの後ろにルートをつけるとapiの呼び出しが出来る。
別のpythonファイルに下記を書いて実行すると{"data": "Hello World"}が帰って来る。
ちなみにgetとpostを入れ替える際はrequestsの後を変えればいい。今はpostを定義してないのでエラーとなる。

import requests

BASE = "http://127.0.0.1:5000/"
response = requests.get(BASE + "helloworld")
print(response.json())

apiに引数の設定をするには下記の様に引数を追加する。
get(selfの後に追加したい引数名を追加。複数の場合は , 引数名 を更に追加。
add_resourceのルート後に引数のタイプと引数名を追加。複数の場合は /<タイプ:引数名> を更に追加。

def get(self): → def get(self, name):
api.add_resource(HelloWorld, "/helloworld") → api.add_resource(HelloWorld, "/helloworld/<string:name>")

呼び出す際はルートの後に/引数を追加。

response = requests.get(BASE + "helloworld") → response = requests.get(BASE + "helloworld/tim")


この記事が気に入ったらサポートをしてみませんか?