创新互联FastAPI教程:FastAPI教程额外的状态码

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 文档

如果你直接返回额外的状态码和响应,它们不会包含在 OpenAPI 方案(API 文档)中,因为 FastAPI 没办法预先知道你要返回什么。

但是你可以使用 额外的响应 在代码中记录这些内容。

新闻名称:创新互联FastAPI教程:FastAPI教程额外的状态码
本文地址:http://www.shufengxianlan.com/qtweb/news31/5981.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联