FastAPI 快速使用

FastAPI框架,高性能,易学,代码快速,生产及可用

快速启动

  • pip install fastapi
  • pip install uvicorn

GET 示例

import os
import uvicorn
from fastapi import FastAPI

app = FastAPI()


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


# [指定参数类型] int, str, float, bool..
@app.get("/items/{int}")
async def item_id(ite: int):
    return {"item_id": ite}


# [路径类型的参数],需要特殊转换
@app.get("/files/{file_path:path}")
def read_user_me(file_path):
    return {"file_path": file_path}


# [组合参数] IP/nums/?num1=2&num2=3
@app.get("/nums/")
def add(num1: int = 2, num2: int = 8):
    return {"num1 + num2 = ": num1 + num2}


if __name__ == '__main__':
    os.system('uvicorn main:app --host 127.0.0.1 --port 8000 --reload')
    # uvicorn.run(app, host="127.0.0.1", port=8000)

POST 示例

import os
import uvicorn
from fastapi import FastAPI, Query
from pydantic import BaseModel


class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None


app = FastAPI()


# 使用请求头模型
@app.post("/items/")
async def create_item(item: Item):
    return item


@app.get("/items2/")
def read_items(q: str = Query(None, max_length=50)):
    results = {"items": 'Big preoject'}
    if q:
        results.update({"q": q})  # 给字典results添加一个健值对{"q": q}
    return results


if __name__ == '__main__':
    os.system('uvicorn main:app --host 127.0.0.1 --port 8000 --reload')
    # uvicorn.run(app, host="127.0.0.1", port=8000)

uvicorn 指令

  • main: main.py 文件(也可理解为Python模块).
  • app: main.py 中app = FastAPI()语句创建的app对象.
  • --reload: 在代码改变后重启服务器,只能在开发的时候使用

自动生成文档

部署服务器

  • 开放对应端口的防火墙
  • host 设定未 0.0.0.0
os.system('uvicorn main:app --host 0.0.0.0 --port 8000')

参考文献


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!