简单絮叨一下
前面聊Cookie
和Header
一些事情,今天主要聊聊关于响应的一些事情
响应就是接口的返回值,及状态码等,这个是必须要有的。其返回的数据主要是用于前端调试页面和测试进行测试的参考。
响应模型
fastapi
只需要在任意路径(@app.get()
、@app.post()
、@app.put()
、@app.delete()
)操作中使用response_model
参数来声明用于响应的模型。
注意点:
response_model
是「装饰器」方法(get
,post
等)的一个参数。不像之前的所有参数和请求体,它不属于路径操作函数。
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel, EmailStr
app = FastAPI()
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
tagg: List[str] = []
@app.post("/items/", response_model=Item)
async def create_item(item: Item):
return item
response_model
就是定义返回值,因为response_model
被Item
赋值,请求接口后返回与输入的数据相同
启动服务:
PS E:\git_code\python-code\fastapiProject> uvicorn response_main:app --reload
请求接口:
POST http://127.0.0.1:8000/items
请求参数:
{
"name": "张三",
"price": 3.2
}
请求结果:
{
"name": "张三",
"description": null,
"price": 3.2,
"tax": null,
"tagg": []
}
如果我们输入的是含密码的,那上述那种返回与输入相同的数据就不适合该需求了,那这样就得定义输出的模型:
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel, EmailStr
from fastapi import status
app = FastAPI()
class UserIn(BaseModel):