fastapi快速入門


fastapi是高性能的web框架。他的主要特點是:

  • 快速編碼
  • 減少人為bug
  • 直觀
  • 簡易
  • 具有交互式文檔
  • 基於API的開放標准(並與之完全兼容):OpenAPI(以前稱為Swagger)和JSON Schema。

技術背景:python3.6+、Starlette、Pydantic

官方文檔地址:https://fastapi.tiangolo.com/

安裝

pip install fastapi
pip install uvicorn

quick start

# main.py

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

或者

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

運行

uvicorn main:app --reload

看到如下提示,證明運行成功

main: 表示app所在文件名
app:FastAPI實例
reload:debug模式,可以自動重啟

試着請求http://127.0.0.1:8000/items/5?q=somequery,會看到如下返回

{"item_id": 5, "q": "somequery"}

交互文檔

試着打開http://127.0.0.1:8000/docs

API文檔

試着打開http://127.0.0.1:8000/redoc

update

通過上面的例子,我們已經用fastapi完成了第一個web服務,現在我們再添加一個接口


from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

此時會發現,服務自動重啟了,這是因為我們在啟動命令后添加了--reload。再次查看文檔,發現同樣發生了改變。
到此,你已經可以快速的用fastapi搭建起服務了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM