赞
踩
需求场景
收到客户端的请求后,服务端要响应,响应主要包含三个关键部分:响应状态码,响应头,响应体。
我们先看响应状态码,服务端如何设置响应状态码呢?
补充:对状态不清楚的复习【1.8 补充HTTP协议】,或者参考视频教程:https://www.51zxw.net/Show.aspx?cid=1003&id=117478
FastAPI的解决方式
FastAPI提供了一种简单便捷的方式设置,简单来说就是在路径装饰器中使用:status_code
字段
示例1:直接给status_code字段一个状态码
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): username: str password: str @app.post("/login", status_code=200) # 直接指定一个响应码 def login(user: User): return { "username": user.username, "password": user.password }
示例2:status_code使用枚举值
补充:官方库http中的HTTPStatus是一个枚举类,枚举了所有的状态码
from http import HTTPStatus
from fastapi import FastAPI
app = FastAPI()
@app.post("/login", status_code=HTTPStatus.OK) # 枚举值OK 其实就是数字200
def login():
pass
示例3:status_code使用常量
从FastAPI导出的status,本质是直接使用starlette的status模块
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/login", status_code=status.HTTP_200_OK)
def login():
pass
需求场景
有的时候,在响应客户端请求的时候,需要在响应头中给客户端返回一些数据,此时该如何设置响应头呢?
FastAPI的解决方式
示例1:在路径函数中使用 Response
from fastapi import FastAPI, Response
app = FastAPI()
@app.post("/login")
def login(response: Response):
response.headers["x-jwt-token"] = "this_is_jwt_token"
return {
"message": "Hello World"}
示例2:直接使用返回一个Response
,比如使用FastAPI的默认响应方式JSONResponse
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.post("/login")
def login():
response = JSONResponse(
content={
"message": "Hello World"},
headers={
"x-jwt-token": "this_is_jwt_token"},
)
return response
扩展:使用返回Response的方式,也可以设置响应状态码,手动设置响应体,操作cookie等等
FastAPI响应数据时,默认响应是json的格式,具体使用的响应类是 JSONResponse
示例1:响应 普通结构数据
from fa
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。