美文网首页fastapi学习文档fastapi
fastapi教程翻译(二十二):Additional Stat

fastapi教程翻译(二十二):Additional Stat

作者: warmsirius | 来源:发表于2019-12-12 11:18 被阅读0次

    默认情况下,FastAPI的响应会使用的,将内容

    默认情况下,FastAPI将使用 StarletteJSONResponse 返回响应,将您从path操作返回的内容放在 JSONResponse 中。

    它将使用默认状态码或您在path操作中设置的状态码。

    一、额外的状态码

    如果您要返回除主代码之外的其他状态代码,可以通过直接返回诸如JSONResponse之类的Response并直接设置其他状态代码来实现。

    例如,假设您要执行path操作,该操作可以更新项目,并在成功时返回200“ OK”的HTTP状态代码。

    但是您也希望它接受新项目。 并且当这些项目以前不存在时,它将创建它们,并返回HTTP状态代码201“已创建”。

    为此,请导入JSONResponse,然后直接返回您的内容,并设置所需的status_code

    from fastapi import Body, FastAPI
    from starlette.responses import JSONResponse from starlette.status import HTTP_201_CREATED
    
    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: str = Body(None),
        size: 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=HTTP_201_CREATED, content=item) 
    

    警告⚠️

    如上例所示,当您直接返回Response时,它将直接返回。

    不会与模型等序列化。

    确保它具有所需的数据,并且 值是有效的JSON(如果使用的是JSONResponse)。

    二、OpenAPI and API 文档

    如果您直接返回其他状态代码和响应,则它们将不会包含在OpenAPI架构(API文档)中,因为FastAPI无法事先知道要返回的内容。

    但是您可以使用以下代码在代码中进行记录:附加响应

    相关文章

      网友评论

        本文标题:fastapi教程翻译(二十二):Additional Stat

        本文链接:https://www.haomeiwen.com/subject/wqgzgctx.html