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 协议 ,转载请注明出处!