Fast-api 学习记录--请求内容
  sk0UK3kWnLtV 2023年11月24日 23 0


一、当要开发一个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的实例对象, 已经进行了字段约束的校验

Fast-api 学习记录--请求内容_json



二、当接口过于复杂时,包含路径参数, 查询参数,请求体:  

@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 的实例对象

Fast-api 学习记录--请求内容_嵌套_02

Fast-api 学习记录--请求内容_嵌套_03



三、当想开发一个接口, 请求参数是多个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的类,并且做为函数的入参,  对请求体进行校验

Fast-api 学习记录--请求内容_嵌套_04

四、当想开发的接口是嵌套json 类型的时候:

格式举例: 

{
	"id_card": {
		"nik": "123",
		"fullName": "SILVIA KARTIKA 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,  则完成了嵌套工作

Fast-api 学习记录--请求内容_嵌套_05



五、当需要设置请求参数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 非必传值

Fast-api 学习记录--请求内容_嵌套_06

Fast-api 学习记录--请求内容_嵌套_07

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
  bzUvzvVq9oY1   2023年11月02日   28   0   0 数据类型json数据库
sk0UK3kWnLtV
最新推荐 更多