4.请求体

什么是请求体(Request Body)

请求体是客户端发送到API的数据。 响应体是API发送给客户端的数据

API几乎总是必须发送一个响应体,但是客户端并不需要一直发送请求体

定义请求体,需要使用 Pydantic 模型

  • 不能通过GET请求发送请求体
  • 发送请求体数据,必须使用以下几种方法之一:POST(最常见)、PUT、DELETE、PATCH

如何实现请求体

实现请求体总共包含三个步骤

第一步,从pydantic中导入BaseModel

from pydantic import BaseModel

第二步,创建请求体数据模型

声明请求体数据模型为一个类,且该类继承 BaseModel。所有的属性都用标准Python类。和查询参数一样:数据类型的属性如果不是必须的话,可以拥有一个默认值或者是可选None。否则,该属性就是必须的

例如,声明了一个JSON对象

from pydantic import BaseModel

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

所以访问链接的时候传入的请求体可以是下面两种

{
    "name": "Foo",
    "description": "An optional description",
    "price": 45.2,
    "tax": 3.5
}

另一种可以不传递默认值或者是可选值,(注意字典后面最后一个元素不需要逗号)

{
    "name": "Foo",
    "price": 45.2
}

第三步、将模型定义为参数

将上面定义的模型添加到路径操作中,就和定义Path和Query参数一样的方式

from pydantic import BaseModel


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


@app.post("/items/")
async def create_item(item: Item):
    return item

声明参数的类型为你创建的模型 Item

 使用请求体模型

在函数内部,可以直接访问模型对象的所有属性

from pydantic import BaseModel


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


@app.post("/items/")
async def create_item(item: Item):
    return item.name

  • 可以同时定义路径参数和请求体参数
  • 可以同时定义路径参数和查询参数和请求体参数,如果path中声明了某个参数,那么这个参数将作为路径参数是使用;如果参数是 单一类型(例如int,float,str,str,bool等),它将被解释为 query参数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值