get请求
from fastapi import FastAPI
app = FastAPI()
#定义接口名称
@app.get('/items/{id}')
def get_id(id: int):
return {'id': id}
效果图如下
在这个例子中,id就是一个路径参数。当你访问如/items/3这样的URL时,id的值就会被设置为3,FastAPI会自动识别并解析路径参数,无需进行任何额外的配置
@app.get('/item/')
def get_id(id: int=10, name: str='bear'):
return {'id': id, 'name': name}
效果图如下
在这个例子中,查询参数是比较常见的一种,当你访问如/item/?id=20&name=hello这样的URL时,id的值就会被设置为20,name的值就会被设置为hello,如果访问/item/,那么id和name则会返回默认值10和bear,FastAPI会自动识别并解析查询参数,无需进行任何额外的配置。
post请求
@app.post("/items")
def read_item(item: dict):
return {"item": item}
效果图如下
使用Pydantic数据模型
from typing import Optional
from pydantic import BaseModel
class Item(BaseModel):
name: str
age: Optional[int] = 18 #可为空 默认18
gender: str
hobby: str = None #可为空 默认null
@app.post("/api/items/", summary="请求体", description="Pydantic请求体", tags=['测试Pydantic请求体'])
def create_item(item: Item):
return item
效果图如下
该例子使用了 pydantic和typing。其中使用pydantic模型后,FastAPI将请求体识别为 JSON 字符串,验证数据,如果验证失败,会返回一个清晰的错误,准确指出错误数据的位置和信息,api/items 会接收到完整的请求体数据,拥有所有属性及其类型
python中typing主要做类型提示,其中Optional是一个特殊的类型,它表示某个值可以是特定类型,也可以是None,age字段设定默认值,如果传参中不传age,则返回设置的默认值18,如果传参age=20,则返回age:20. 另hobby参数格式,可选值,传参则返回传的值,如不传则返回null
可能会有同学看到了post请求后加有summary="请求体", description="Pydantic请求体", tags=['测试Pydantic请求体']这里不多解释,浏览器输入ip:端口号/docs自己观看即可