持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
HTTP状态码
-
HTTP状态码又叫响应状态码,它是HTTP协议的一部分,用来表示具体含义的响应信息。
-
HTTP响应状态码本质上就是一个数字,不过根据响应的情况分成了四大系列:
- 1xx:1开头的三位数字,表示普通信息,这里响应没有响应体数据。
- 2xx:2开头的三位数字,表示请求成功的响应信息,比如常用的200 OK; 201表示Created等等。
- 3xx:3开头的三位数字,表示重定向。
- 4xx:4开头的三位数字,表示客户端请求失败,比如404表示请求的数据/资源不存在。
- 5xx:5开头的三位数字,表示服务端出错了。
响应状态码
- 和响应模型一样,我们也可以在路径操作装饰器中通过
status_code设置这个路径函数的默认响应状态码
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/", status_code=201) # 默认该接口响应状态码是201
async def create_item(name: str):
return {"name": name}
-
设置
status_code会在两个地方有反馈:- 给客户端的响应状态码是201
- 在openapi文档上有对应的显示效果。
注意,
status_code是「装饰器」方法(get,post等)的一个参数。不像之前的所有参数和请求体,它不属于路径操作函数。
状态码常量
- 直接使用状态码数字有时可能表意不明显,此时可以使用字面意思清楚的常量。
- fastapi提供了这个HTTP状态码常量,本质上之直接使用starlette的状态码常量。
- 这样的好处有两点:字面意思清晰;编辑器有代码补全提示。
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。