👀

FastAPIでHelloWorld

2022/03/13に公開

概要

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