👀
FastAPIでHelloWorld
概要
FastAPIでREST APIを作成し、HelloWorldを受け取ることを目指します。
この記事のゴール
http://localhost/hello にAPI callを行い{"message":"Hello World"}
を受け取る
意識する点
API実装をテストを意識しながらやってみる
使用するツール
pipenv で python 3.9の仮想環境を作成します。
pipenv --python 3.9
こちらのツールはなくても問題ありません。
pipenv を使用しない場合は下記のように読み替えてもらえれば良いと思います。
pipenv install --> [pip or pip3] install
pipenv run [command] --> [command]
例
pipenv install tavern
--> pip3 install tavern
pipenv run pytest test_get_hello.tavern.yaml
-> pytest test_get_hello.tavern.yaml
APIのテストを作成
APIのテストを作成します。
pythonのREST APIテストフレームワーク tavern を使用します。
https://github.com/taverntesting/tavern
pipenv install tavern
tavernのテストファイルを作成します。
test_get_hello.tavern.yaml
test_name: 簡単なテスト
stages:
- name: 想定されたjsonが返ってくるかどうかのテスト
request:
url: http://localhost:8000/hello
method: GET
response:
status_code: 200
json:
message: "Hello World"
テストの実行
pipenv run pytest test_get_hello.tavern.yaml
まだREST APIを実装しておらず、APIコール先には何もいないのでエラーになります。
APIの作成
API本体を作成します。
今回はREST API実装のためにpythonのWebフレームワーク FastAPI を使用します。
https://fastapi.tiangolo.com/ja/
必要なパッケージをインストールします。
pipenv install fastapi 'uvicorn[standard]'
アプリケーションを作成します。
main.py
from fastapi import FastAPI
app = FastAPI()
"""
app.{HTTPメソッド}("{resource path}")
def 関数名
return {response body}
"""
@app.get("/hello")
def hello():
return {"message": "Hello World"}
アプリを実行します
pipenv run uvicorn main:app --reload
テストの再実施
エラーになっていたテストを再度実行し、意図した実装ができているか確認します。
pipenv run pytest test_get_hello.tavern.yaml
今度はエラーが解消されていると思います。
実際にAPI callを行ってみます。
curl http://localhost:8000/hello
{"message":"Hello World"}
{"message":"Hello World"}
が返却されたので実装は完了になります。
Discussion