当前位置:   article > 正文

【FastAPI】P3 请求与响应

【FastAPI】P3 请求与响应

在网络通讯中,请求(Request)响应(Response) 扮演着至关重要的角色,它们构成了客户端与服务器间互动的根本理念。

  • 请求,指的是客户端向服务器请求数据;
  • 响应,指的是服务器发送给客户端的 HTTP 响应;

总的来说,当客户端向服务器发送一个 HTTP 请求时,服务器会处理这个请求,并返回一个 HTTP 响应。


请求

FastAPI,支持多种类型的请求数据,如路径参数、查询参数等。

路径参数

把参数设置在路径上,识别资源的具体实例。

# 参数 user_id 放在路径上,识别资源的具体实例。
@app.get("/users/{user_id}")
  • 1
  • 2

实现步骤:

1. 运行完整代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. 部署 uvicorn 服务器:

uvicorn main:app --reload
  • 1

在这里插入图片描述

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
  • 2
  • 3

实现步骤:

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}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. 部署 uvicorn 服务器:

# 如果已部署,那么无需重启,reload在代码修改时自动重启服务器
uvicorn main:app --reload
  • 1
  • 2

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}
  • 1

文本响应

文本响应发送纯文本数据。

return "Hello, World!"
  • 1

返回 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")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

2. 通过网址访问:

http://127.0.0.1:8000/users/1

3. FastAPI 自动将 Pydantic 模型实例转换为 JSON 格式:

在这里插入图片描述

有关 FastAPI Pydantic 模型,请看 【FastAPI】P4 FastAPI Pydantic


以上
如有任何问题,请联系或留言,谢谢

2024.2.19

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/416452
推荐阅读
相关标签
  

闽ICP备14008679号