Python FastAPIの入門
はじめに
Tornadoの紹介記事を書いていて、APIServerとしても良いよ的な私感を述べたのですが
APIServerならこの、FastAPIもとても良いので記事にしてみました
対象
フルスタックエンジニア、フロントエンジニア、これから勉強しようと思っている人、Pythonが好きな人
python3.6以上がインストールされていること
ゴール
インストール〜簡易的なJSONを出力できるまで
Swaggerでの表示
FastAPIとは
後発なWebFrameworkだけあってモダンな機能、パフォーマンスの高さを意識したものとなっている
以下公式
- 高速:NodeJSやGolangと同等のパフォーマンス
- 開発効率UP
- 簡単:使いやすく学習しやすいように設計されている
(ドキュメントを読む時間が短縮・・・英語ですけどね
- 自動インタラクティブドキュメント(Swagger UI)
インストール
FastAPIのインストールはpipのみ
$ pip install fastapi uvicorn
pipってとても優秀なやつだと、毎回思います(コピペ)
今回はASGI Serverになるuvicornもinstall
Hello World
これもまぁ公式なのですが
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
起動&閲覧
ターミナルで
$ uvicorn main:app --reload --host 0.0.0.0
reloadオプションはソース変更時自動的にreloadしてくれるもの
hostオプションに0.0.0.0を指定してるのはDockerやVMで起動し、PortForwardするおまじない
詳しくはここなど
simple JSON
さらに、ちょっとコードを加えることで簡易的なAPIっぽくしてみます
localhost:8000/docs にアクセスするだけでSwaggerがみれてしまうんですね
ソース
from fastapi import FastAPI
from typing import Optional
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
@app.get("/booklist")
def read_books():
books = [
{'name': 'book1', 'price': 1500},
{'name': 'book2', 'price': 1800},
{'name': 'book3', 'price': 2300},
]
return books
Author And Source
この問題について(Python FastAPIの入門), 我々は、より多くの情報をここで見つけました https://qiita.com/sin_hayasi/items/cec8519cc34f7fbfbc75著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .