[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")
この記事が気に入ったらサポートをしてみませんか?