FastApi教程|响应状态码

发表时间:2020-03-09

您可以使用指定响应模型的相同方法,也可以 status_code 在任何 路径操作中 使用参数声明用于响应的HTTP状态代码 :

  • @app.get()
  • @app.post()
  • @app.put()
  • @app.delete()
  • 等等
from fastapi import FastAPI

app = FastAPI()


@app.post("/items/", status_code=201)
async def create_item(name: str):
    return {"name": name}

注意

注意, status_code 是“装饰”方法的参数( get post 等)。 不像所有参数和主体一样, 具有 路径操作功能

status_code 参数接收带有HTTP状态代码的数字。

它会:

  • 在响应中返回该状态码。
  • 在OpenAPI模式中(以及在用户界面中)将其记录为:

注意

一些响应代码(请参阅下一节)表明响应没有主体。

FastAPI知道这一点,并将生成表明没有响应正文的OpenAPI文档。

关于HTTP状态码

注意

如果您已经知道什么是HTTP状态代码,请跳到下一部分。

在HTTP中,您将发送3位数的数字状态代码作为响应的一部分。

这些状态代码具有关联的名称以识别它们,但重要的是数字。

简而言之:

  • 100 以上为“信息”。 您很少直接使用它们。 具有这些状态代码的响应不能带有主体。
  • 200 和以上是针对“成功”响应的。 这些是您最常使用的。
    • 200 是默认状态代码,表示一切都正常。
    • 另一个示例是 201 “已创建”。 通常在数据库中创建新记录后使用。
    • 特殊情况是 204 “无内容”。 当没有内容返回给客户端时使用此响应,因此该响应必须没有正文。
  • 300 以上是“重定向”的。 具有这些状态代码的响应可能带有或可能没有正文,但 304 “ Not Modified” 除外 , 该正文 不得包含一个。
  • 400 及以上是针对“客户端错误”响应的。 这些是您可能最常使用的第二种类型。
    • 例如 404 ,对于“未找到”响应。
    • 对于来自客户端的一般错误,您可以使用 400
  • 500 以上是针对服务器错误的信息。 您几乎永远不会直接使用它们。 当您的应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。

小费

要了解有关每个状态代码以及适用于什么的代码的更多信息,请查看 有关HTTP状态代码 MDN 文档

记住名字的捷径

让我们再次看前面的例子:

from fastapi import FastAPI

app = FastAPI()


@app.post("/items/", status_code=201)
async def create_item(name: str):
    return {"name": name}

201 是“已创建”的状态代码。

但是您不必记住每个代码的含义。

您可以使用中的便捷变量 fastapi.status

from fastapi import FastAPI, status

app = FastAPI()


@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
    return {"name": name}

它们只是一种方便,它们拥有相同的编号,但是那样一来,您可以使用编辑器的自动完成功能来查找它们:

技术细节

您也可以使用 from starlette import status

FastAPI 提供相同 starlette.status fastapi.status ,就像为你的方便,开发人员。 但它直接来自Starlette。

更改默认

稍后,在“ 高级用户指南”中 ,您将看到如何返回与在此声明的默认状态码不同的状态码。

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free