在网络通讯中,请求(Request) 与 响应(Response) 扮演着至关重要的角色,它们构成了客户端与服务器间互动的根本理念。
- 请求,指的是客户端向服务器请求数据;
- 响应,指的是服务器发送给客户端的 HTTP 响应;
总的来说,当客户端向服务器发送一个 HTTP 请求时,服务器会处理这个请求,并返回一个 HTTP 响应。
请求
FastAPI,支持多种类型的请求数据,如路径参数、查询参数等。
路径参数
把参数设置在路径上,识别资源的具体实例。
# 参数 user_id 放在路径上,识别资源的具体实例。
@app.get("/users/{user_id}")
实现步骤:
1. 运行完整代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
2. 部署 uvicorn 服务器:
uvicorn main:app --reload
3. 通过网址访问:
http://127.0.0.1:8000/users/10010
查询参数
通过在路径后面添加问号(?)来附加查询参数,以提供额外的信息或者过滤条件。
@app.get("/users")
# 网址如下:
http://127.0.0.1:8000/users?user_id=10010&user_name=xuhongduo
实现步骤:
1. 运行完整代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/")
def get_user(user_id: int, user_name: str):
return {"user_id": user_id, "user_name": user_name}
2. 部署 uvicorn 服务器:
# 如果已部署,那么无需重启,reload在代码修改时自动重启服务器
uvicorn main:app --reload
3. 通过网址访问:
http://127.0.0.1:8000/users/?user_id=10010&user_name=xuhongduo
响应
响应一般包含:
- 状态码:200表示成功,404表示未找到,500表示服务器错误等;
- 响应体:文本、JSON、二进制文本等;
FastAPI 支持多种类型的响应,包括 JSON 响应、文本响应、文件响应、重定向响应和错误响应。
JSON 响应
JSON 响应是最常用的响应类型,用于传输结构化数据。
return {"user_id": user_id, "user_name": user_name}
文本响应
文本响应发送纯文本数据。
return "Hello, World!"
返回 Pydantic 模型
路由处理函数返回一个 Pydantic 模型实例,FastAPI 将自动将其转换为 JSON 格式,并作为响应发送给客户端:
1. 运行完整代码:
from pydantic import BaseModel
from typing import Optional
class User(BaseModel):
id: int
name: str
email: Optional[str] = None
from fastapi import FastAPI, HTTPException
app = FastAPI()
users = {
1: {"name": "Alice", "email": "alice@example.com"},
2: {"name": "Bob"},
}
@app.get("/users/{user_id}")
def read_user(user_id: int):
user = users.get(user_id)
if user:
return user
else:
raise HTTPException(status_code=404, detail="User not found")
2. 通过网址访问:
3. FastAPI 自动将 Pydantic 模型实例转换为 JSON 格式:
有关 FastAPI Pydantic 模型,请看 【FastAPI】P4 FastAPI Pydantic
以上
如有任何问题,请联系或留言,谢谢
2024.2.19