赞
踩
在FastAPI中,允许自行定义返回的响应状态码,可以通过在路由操作中声明 status_code 的参数值来返回状态码。 status_code 是装饰器方法参数,不属于路由操作参数, status_code 接受一个表示HTTP状态码的数值,也可以接受一个 IntEnum 类型 ,可以使用python的 http.HTTPStatus,具体可打开链接:http — HTTP modules — Python 3.10.2 documentation
在 HTTP 协议中,可以发送 3 位数的数字状态码作为响应的一部分,这些状态码有一个识别它们的关联名称,但是重要的还是数字。
概括如下:
100 及以上状态码用于「消息」响应。一般很少直接使用。具有这些状态代码的响应不能带有响应体。
200 及以上状态码用于「成功」响应。最常使用的。200 是默认状态代码,它表示一切「正常」。另一个例子会是 201,「已创建」。它通常在数据库中创建了一条新记录后使用。一个特殊的例子是 204,「无内容」。此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。
300 及以上状态码用于「重定向」。具有这些状态码的响应可能有或者可能没有响应体,但 304「未修改」是个例外,该响应不得含有响应体。
400 及以上状态码用于「客户端错误」响应。这些也是经常使用的类型。一个例子是 404,用于「未找到」响应。对于来自客户端的一般错误,可以只使用 400。
500 及以上状态码用于服务器端错误。几乎永远不会直接使用它们。当应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。
示例代码:
from fastapi import FastAPI app = FastAPI() @app.get(path='/hello', status_code=201) async def hello(): return {'hello': 'world'}
执行请求后的日志显示状态码:
127.0.0.1:50101 - "GET /hello HTTP/1.1" 201 Created
示例代码:
from fastapi import FastAPI from http import HTTPStatus app = FastAPI() @app.get(path='/hello', status_code=HTTPStatus.CREATED) async def hello(): return {'hello': 'world'}
示例代码:
from fastapi import FastAPI from fastapi import status app = FastAPI() @app.get(path='/hello', status_code=status.HTTP_201_CREATED) async def hello(): return {'hello': 'world'}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。