一、当要开发一个post类型的接口,且请求类型是json ,这时候应该使用fast api 的BaseModel 模型
class request_body(BaseModel):
name: str
age: int
height: Union[float, int] = None
tax:Union[float,None] = None
@app.post("/items/")
async def postFun(request_body: Item):
return item
解释:定义路由为 根路径/items/
请求体为request_body , 且request_body类是Item的实例对象, 已经进行了字段约束的校验
二、当接口过于复杂时,包含路径参数, 查询参数,请求体:
@app.put("/items/{item_id}")
async def create_item(item_id:int,item:Item,q:Union[str,None]=None):
result = {"item_id":item_id,**item.dict()}
if q:
result.update({"q":q})
return result
解释: /items路径后{item_id}为路径参数, 是int类型, 然后会自动识别传入的数据,q为查询参数, body是Item 的实例对象
三、当想开发一个接口, 请求参数是多个json的组合的操作:
class Women(BaseModel):
name:str
age:int
class Man(BaseModel):
tall:float
height:float
clother:str
@app.post("/more/")
async def moreJsonDemo(body1:Women,body2:Man):
return body1,body2
定义两个BaseModel的类,并且做为函数的入参, 对请求体进行校验
四、当想开发的接口是嵌套json 类型的时候:
格式举例:
{
"id_card": {
"nik": "123",
"fullName": "SILVIA KART服务器托管网IKA DEWI",
"birthDay": "05-05-1990"
}
}
class ID_card(BaseModel):
nik: int
fullName: str
birthDay: str
# todo 10 : sub-json
@app.post("/id")
async def getDob(bodys:Annotated[ID_card,Body(embed=True)]):
result = {"response": bodys}
return result
解释: 定义了请求体json对象 ID_card , 当想要嵌套时, 外层嵌套的json 的key 为: bodys, 然后将embed(嵌套)属性修改为True, 则完成了嵌套工作
五、当需要设置请求参数cookie时:
@app.get("/cookieDemo")
async def post_cookie(
name:Union[str,None] = Cookie()
):
print("name:{}"服务器托管网.format(name))
return {
"message":"hello {}".format(name)
}
设置name…… = Cookie() , 说明name是请求参数cookie , 设置 Union = None 说明cookie 非必传值
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
为什么HR人力资源管理部被认为是没有价值、打杂的、背锅侠、铲屎官的部门? 接下来,我们聊聊HR地位低的原因。 一、管理层认知 大多数公司的管理层,尤其是中小公司,管理层不会虚心倾听HR的建议,认为HR没有资格去评判,也不相信HR反馈的市场信息。实际上,管理层的…