FastAPI 默认使用 JSONResponse 返回一个响应,将你的 路径操作 中的返回内容放到该 JSONResponse 中。
成都创新互联是一家专业提供凤冈企业网站建设,专注与成都网站建设、网站设计、H5高端网站建设、小程序制作等业务。10年已为凤冈众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
FastAPI 会自动使用默认的状态码或者使用你在 路径操作 中设置的状态码。
如果你想要返回主要状态码之外的状态码,你可以通过直接返回一个 Response 来实现,比如 JSONResponse,然后直接设置额外的状态码。
例如,假设你想有一个 路径操作 能够更新条目,并且更新成功时返回 200 「成功」 的 HTTP 状态码。
但是你也希望它能够接受新的条目。并且当这些条目不存在时,会自动创建并返回 201 「创建」的 HTTP 状态码。
要实现它,导入 JSONResponse,然后在其中直接返回你的内容,并将 status_code 设置为为你要的值。
from typing import Optional
from fastapi import Body, FastAPI, status
from fastapi.responses import JSONResponse
app = FastAPI()
items = {"foo": {"name": "Fighters", "size": 6}, "bar": {"name": "Tenders", "size": 3}}
@app.put("/items/{item_id}")
async def upsert_item(
item_id: str, name: Optional[str] = Body(None), size: Optional[int] = Body(None)
):
if item_id in items:
item = items[item_id]
item["name"] = name
item["size"] = size
return item
else:
item = {"name": name, "size": size}
items[item_id] = item
return JSONResponse(status_code=status.HTTP_201_CREATED, content=item)
警告
当你直接返回一个像上面例子中的 Response 对象时,它会直接返回。
FastAPI 不会用模型等对该响应进行序列化。
确保其中有你想要的数据,且返回的值为合法的 JSON(如果你使用 JSONResponse 的话)。
技术细节
你也可以使用 from starlette.responses import JSONResponse。
出于方便,FastAPI 为开发者提供同 starlette.responses 一样的 fastapi.responses。但是大多数可用的响应都是直接来自 Starlette。status 也是一样。
如果你直接返回额外的状态码和响应,它们不会包含在 OpenAPI 方案(API 文档)中,因为 FastAPI 没办法预先知道你要返回什么。
但是你可以使用 额外的响应 在代码中记录这些内容。
新闻名称:创新互联FastAPI教程:FastAPI教程额外的状态码
本文地址:http://www.shufengxianlan.com/qtweb/news31/5981.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联