python系列:FASTAPI系列 04-GET请求 params参数

333 篇文章 ¥99.90 ¥299.90




FASTAPI系列 04-GET请求 params参数

前言

get请求的参数在url后面携带,通常称做query params

一、查询参数

在请求路径后面携带查询参数时,自动解析为查询参数

from pydantic import BaseModel
from fastapi import FastAPI

app = FastAPI()

# 模拟数据库
book_db = [
    {
   
   "book_name": "FASTAP
FastAPI 中,`GET` 方法是最常见的 HTTP 请求方法之一,用于从服务器获取数据。FastAPI 提供了简洁而强大的方式来定义和处理 `GET` 请求。以下是一个完整的使用指南。 ### 定义基本的 GET 接口 在 FastAPI 中定义一个 `GET` 接口非常简单,只需要使用 `@app.get()` 装饰器,并将其绑定到一个异步或同步函数上。例如: ```python from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} ``` 在上述示例中,`/items/{item_id}` 是一个路径参数,其中 `item_id` 是一个整数类型。查询参数 `q` 是可选的,默认值为 `None`。该接口返回一个包含 `item_id` 和 `q` 的 JSON 响应[^3]。 ### 使用查询参数和路径参数 FastAPI 允许开发者在 `GET` 请求中使用查询参数和路径参数。路径参数用于标识资源,而查询参数通常用于过滤、排序或分页等操作。例如: ```python @app.get("/users") async def read_users(skip: int = 0, limit: int = 10): return {"skip": skip, "limit": limit} ``` 在这个例子中,`skip` 和 `limit` 是查询参数,常用于实现分页功能。FastAPI 会自动解析请求中的查询参数并将其转换为指定的类型[^3]。 ### 响应模型与数据验证 FastAPI 支持使用 Pydantic 模型来定义响应结构,并自动进行数据验证。例如: ```python from pydantic import BaseModel class Item(BaseModel): name: str description: str = None price: float tax: float = None @app.get("/items/", response_model=Item) async def get_item(): return { "name": "Example Item", "price": 10.99, "tax": 1.25 } ``` 在此示例中,`response_model=Item` 指定了返回数据的结构,并确保返回值符合 `Item` 模型的定义。如果返回的数据不符合模型,FastAPI 会自动抛出异常[^3]。 ### 异步支持 FastAPI 原生支持异步请求处理。只需将函数定义为 `async def`,FastAPI 会自动将其作为异步函数执行。例如: ```python @app.get("/async-example") async def async_example(): data = await fetch_data() return data ``` 在上述代码中,`fetch_data()` 是一个异步函数,通过 `await` 关键字调用。FastAPI 能够高效地处理异步请求,从而提高应用程序的性能和响应能力[^2]。 ### 自定义响应状态码 默认情况下,FastAPI 返回 200 状态码表示请求成功。开发者也可以通过 `status_code` 参数自定义响应状态码。例如: ```python from fastapi import status @app.get("/custom-status", status_code=status.HTTP_202_ACCEPTED) async def custom_status(): return {"message": "Accepted"} ``` 在该示例中,接口返回的状态码为 `202 Accepted`,表示请求已被接受,但尚未处理完成。FastAPI 提供了多种状态码常量,方便开发者使用[^3]。 ### 结合依赖注入 FastAPI 提供了强大的依赖注入系统,可以轻松地将依赖项(如认证、数据库连接等)注入到接口函数中。例如: ```python from fastapi import Depends, FastAPI app = FastAPI() def common_params(q: str = None, skip: int = 0, limit: int = 100): return {"q": q, "skip": skip, "limit": limit} @app.get("/items/") async def read_items(params: dict = Depends(common_params)): return params ``` 在该示例中,`common_params` 是一个依赖项,用于处理查询参数。通过 `Depends` 注入机制,`common_params` 可以被多个接口复用,从而提高代码的可维护性和可读性[^5]。 ### 自动生成文档 FastAPI 自动为所有接口生成交互式文档,包括 Swagger UI 和 ReDoc。开发者无需手动编写文档,只需定义接口和参数FastAPI 会自动将其展示在 `/docs` 和 `/redoc` 路径下。例如,在浏览器中访问 `http://localhost:8000/docs`,即可查看所有接口的详细信息和测试界面。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值