FastAPI传参类型

Power Automate实战:用SharePoint REST API批量处理列表数据(附JSON解析技巧) 本文深入探讨了如何利用Power Automate调用SharePoint REST API实现列表数据的批量自动化处理。文章详细解析了API的协同工作原理、高效的数据获取与筛选技巧,并重点分享了JSON数据解析的核心难点与实战解决方案,旨在帮助企业用户构建稳定可靠的数据处理流程,提升运营效率。 阅读详情

FastAPI 作为现代化的 Python Web 框架,提供了7种核心的参数传递方式,覆盖了 HTTP 请求的所有常见场景,且每种方式都有明确的使用场景和自动校验能力。

核心参数传递方式(按使用频率排序)

1. 路径参数(Path Parameters)
  • 核心作用:从 URL 路径中提取参数(比如 /users/123 中的 123);
  • 适用场景:标识资源的唯一ID、分类、版本等(如用户ID、商品ID);
  • 自动特性:支持类型注解(int/str/enum),自动校验类型,不匹配则返回 422 错误。
from fastapi import FastAPI

app = FastAPI()

# 路径参数:user_id 是路径中的参数
@app.get("/users/{user_id}")
def get_user(user_id: int):  # 限定为int类型,传字符串会报错
    return {"user_id": user_id, "message": "获取用户信息"}

# 枚举类型的路径参数(限定可选值)
from enum import Enum
class ItemType(str, Enum):
    book = "book"
    electronic = "electronic"

@app.get("/items/{item_type}")
def get_items(item_type: ItemType):
    return {"item_type": item_type}
2. 查询参数(Query Parameters)
  • 核心作用:从 URL 后的 ?key=value 中提取参数(比如 /items?page=1&size=10);
  • 适用场景:分页、筛选、排序、搜索等(如页码、每页条数、搜索关键词);
  • 自动特性:支持默认值、可选参数、数值校验(如最小值/最大值)。
from fastapi import FastAPI, Query

app = FastAPI()

# 查询参数:page和size是查询参数,有默认值
@app.get("/items/")
def get_items(
    page: int = 1,  # 默认值1,可选参数
    size: int = Query(10, ge=1, le=100)  # 限定size≥1且≤100
):
    return {"page": page, "size": size}

# 可选的查询参数(None表示可选)
@app.get("/search/")
def search(keyword: str | None = None):
    if keyword:
        return {"message": f"搜索关键词:{keyword}"}
    return {"message": "无搜索关键词"}
3. 请求体(Request Body)
  • 核心作用:从 HTTP 请求体中获取数据(POST/PUT/PATCH 请求的核心参数);
  • 适用场景:提交/修改资源(如创建用户、提交表单、上传JSON数据);
  • 自动特性:基于 Pydantic 模型校验数据,自动生成 JSON 校验规则,支持嵌套模型。
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 定义请求体模型(Pydantic)
class User(BaseModel):
    name: str
    age: int
    email: str | None = None  # 可选字段

# POST请求的请求体参数
@app.post("/users/")
def create_user(user: User):  # user 是请求体数据,自动解析JSON
    return {"message": "创建用户成功", "user": user}

# 多个请求体参数(自动合并为一个JSON)
@app.put("/users/{user_id}")
def update_user(user_id: int, user: User, is_active: bool = True):
    return {"user_id": user_id, "user": user, "is_active": is_active}
4. 请求头参数(Header Parameters)
  • 核心作用:从 HTTP 请求头中提取参数(如 Token、Content-Type);
  • 适用场景:身份认证、传递非业务的元数据(如令牌、设备类型、语言);
  • 注意点:请求头名称自动忽略大小写,下划线 _ 会转为 -(如 user_agent 对应 User-Agent)。
from fastapi import FastAPI, Header

app = FastAPI()

# 请求头参数:token和user_agent是请求头中的参数
@app.get("/auth/")
def auth(
    token: str = Header(...),  # ... 表示必填参数
    user_agent: str | None = Header(None)  # 可选的User-Agent
):
    return {"token": token, "user_agent": user_agent}
5. Cookie 参数(Cookie Parameters)
  • 核心作用:从 HTTP 请求的 Cookie 中提取参数;
  • 适用场景:读取客户端存储的 Cookie(如会话ID、用户标识)。
from fastapi import FastAPI, Cookie

app = FastAPI()

# Cookie参数:session_id 是Cookie中的参数
@app.get("/session/")
def get_session(session_id: str | None = Cookie(None)):
    if session_id:
        return {"session_id": session_id}
    return {"message": "未检测到会话ID"}
6. 表单参数(Form Parameters)
  • 核心作用:从 application/x-www-form-urlencoded 格式的表单中提取参数;
  • 适用场景:传统表单提交(如登录、注册的账号密码);
  • 前置依赖:需要安装 python-multipart(pip install python-multipart)。
from fastapi import FastAPI, Form

app = FastAPI()

# 表单参数:username和password是表单字段
@app.post("/login/")
def login(
    username: str = Form(...),  # 必填表单字段
    password: str = Form(...)
):
    return {"message": f"登录成功,用户名:{username}"}
7. 文件上传(File Parameters)
  • 核心作用:接收客户端上传的文件(单文件/多文件);
  • 适用场景:图片、文档、视频等文件上传;
  • 前置依赖:同样需要 python-multipart。
from fastapi import FastAPI, File, UploadFile

app = FastAPI()

# 单文件上传:file 是上传的文件
@app.post("/upload/")
def upload_file(file: UploadFile = File(...)):  # UploadFile比File更易用(支持文件名/内容类型)
    return {
        "filename": file.filename,
        "content_type": file.content_type,
        "message": "文件上传成功"
    }

# 多文件上传
@app.post("/upload-multiple/")
def upload_multiple_files(files: list[UploadFile] = File(...)):
    return {"filenames": [file.filename for file in files]}

进阶:混合参数传递

实际开发中,常混合使用多种参数方式,FastAPI 会自动识别:

from fastapi import FastAPI, Query, Header
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

# 混合:路径参数 + 查询参数 + 请求头 + 请求体
@app.put("/items/{item_id}")
def update_item(
    item_id: int,  # 路径参数
    is_urgent: bool = Query(False),  # 查询参数
    token: str = Header(...),  # 请求头参数
    item: Item  # 请求体参数
):
    return {
        "item_id": item_id,
        "is_urgent": is_urgent,
        "token": token,
        "item": item
    }

总结

  1. 核心参数方式:路径参数(URL路径)、查询参数(URL后缀)、请求体(POST/PUT数据)是最常用的3种,覆盖80%以上场景;
  2. 辅助参数方式:请求头、Cookie(身份认证)、表单、文件上传(特殊场景);
  3. 核心优势:所有参数都支持类型注解+自动校验,不合法参数自动返回422错误,且自动生成OpenAPI文档(访问 /docs 可查看)。
from fastapi import FastAPI, Query,Path
from pydantic import BaseModel, Field
import uvicorn

# 初始化FastAPI应用
app = FastAPI(
    title="参数传递示例",
    description="演示路径参数、查询参数、请求体参数的使用",
    version="1.0.0"
)

# ==================== 1. 路径参数(Path Parameters) ====================
# 场景1:基础路径参数(提取URL路径中的唯一标识)
# 接口:/users/{user_id} → 提取user_id作为参数
@app.get("/users/{user_id}", summary="获取单个用户信息")
def get_user(
    user_id: int  # 类型注解:限定为int,FastAPI会自动校验
):
    """
    路径参数详解:
    - user_id: 从URL路径 /users/123 中提取的用户ID,限定为整数
    - 如果传入非整数(如 /users/abc),FastAPI会自动返回422错误(参数校验失败)
    """
    return {
        "code": 200,
        "msg": "success",
        "data": {"user_id": user_id, "username": f"user_{user_id}"}
    }

# 场景2:带校验的路径参数(枚举值限定)
# 先定义枚举类,限定路径参数的可选值
from enum import Enum
class ItemCategory(str, Enum):
    ELECTRONIC = "electronic"  # 电子产品
    BOOK = "book"              # 图书
    CLOTHING = "clothing"      # 服装

@app.get("/items/{category}/{item_id}", summary="按分类和ID获取商品")
def get_item(
    category: ItemCategory,  # 限定为枚举值,只能传 electronic/book/clothing
    item_id: int = Path(..., ge=1, le=1000)  # 进阶:Path类增强校验(ge=≥1,le=≤1000)
):
    """
    进阶路径参数:
    - category: 枚举类型,只能传指定的3个值,否则返回422
    - item_id: 用Path类增强校验,限定1≤item_id≤1000
    """
    return {
        "code": 200,
        "msg": "success",
        "data": {"category": category, "item_id": item_id}
    }

# ==================== 2. 查询参数(Query Parameters) ====================
# 场景1:基础查询参数(URL后缀 ?key=value)
# 接口:/products/ → 支持 ?page=1&size=10&keyword=手机
@app.get("/products/", summary="分页查询商品列表")
def get_products(
    page: int = Query(1, ge=1),  # 默认值1,校验:≥1
    size: int = Query(10, ge=1, le=50),  # 默认值10,校验:1≤size≤50
    keyword: str | None = None  # 可选参数,默认None
):
    """
    查询参数详解:
    - page: 页码,默认1,必须≥1
    - size: 每页条数,默认10,1≤size≤50
    - keyword: 搜索关键词,可选(不传则返回全部)
    - Query类用于增强校验:默认值、范围、描述等
    """
    # 模拟返回数据
    data = {
        "page": page,
        "size": size,
        "keyword": keyword,
        "items": [{"id": i, "name": f"商品{i}"} for i in range((page-1)*size+1, page*size+1)]
    }
    return {"code": 200, "msg": "success", "data": data}

# ==================== 3. 请求体参数(Request Body) ====================
# 第一步:定义Pydantic模型(请求体的结构和校验规则)
class UserCreate(BaseModel):
    """创建用户的请求体模型"""
    username: str = Field(..., min_length=3, max_length=20, description="用户名,3-20个字符")
    email: str = Field(..., pattern=r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$", description="邮箱格式")
    age: int = Field(None, ge=18, le=100, description="年龄,18-100岁,可选")
    is_vip: bool = Field(False, description="是否VIP,默认False")

# 场景1:基础请求体(POST请求的核心数据)
# 接口:/users/ → POST请求,请求体为JSON格式
@app.post("/users/", summary="创建新用户")
def create_user(
    user: UserCreate  # 自动解析请求体的JSON为UserCreate对象,并校验
):
    """
    请求体参数详解:
    - user: 接收POST请求体的JSON数据,自动映射到UserCreate模型
    - Pydantic会自动校验:用户名长度、邮箱格式、年龄范围等
    - 校验失败则返回422错误,包含具体的错误信息
    """
    # 模拟创建用户(实际项目中可写入数据库)
    return {
        "code": 200,
        "msg": "用户创建成功",
        "data": {
            "username": user.username,
            "email": user.email,
            "age": user.age,
            "is_vip": user.is_vip
        }
    }

# 场景2:混合参数(路径+查询+请求体)
@app.put("/users/{user_id}/update", summary="更新用户信息(混合参数)")
def update_user(
    user_id: int,  # 路径参数
        user: UserCreate,  # 请求体参数
    is_admin: bool = Query(False),  # 查询参数

):
    """
    混合参数示例:
    - 路径参数:user_id(用户ID)
    - 查询参数:is_admin(是否管理员操作)
    - 请求体参数:user(更新的用户信息)
    FastAPI会自动区分不同类型的参数,无需额外配置
    """
    return {
        "code": 200,
        "msg": "用户更新成功",
        "data": {
            "user_id": user_id,
            "is_admin": is_admin,
            "user_info": user.dict()
        }
    }

# 启动服务(直接运行该文件时生效)
if __name__ == "__main__":
    # 启动uvicorn服务器:host=0.0.0.0(允许外部访问),port=8000,reload=True(热重载)
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
6-2 GPU GART 绑定机制与 TLB 失效 本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存 阅读详情

相关推荐

Android Studio中把llama.cpp编译Android .so

本文介绍了一个在Android Studio中集成llama.cpp的最小Demo实现方案,通过JNI将llama.cpp编译为Android.so库,实现本地加载GGUF模型进行文本生成。文章详细说明了项目结构配置(SDK≥30,NDK≥28)、CMake编译设置、Kotlin-JNI-C++的完整调用链实现,以及模型文件部署方式。该Demo采用每次请求新建上下文的简化设计,包含加载模型、生成文本、资源释放等核心功能,并提供了错误排查建议。项目舍弃了上下文保持等复杂功能以确保稳定性,适合作为端侧大语言模型

Zhang Phil 524

【Python开发】FastAPI 03:请求参数—请求体

除了路径参数和查询参数,还有请求体,其用于传递 JSON、XML 或其他格式的数据,以便服务器能够读取并做出相应的处理,可以说请求体的作用更为强大。试想一下,如果存在七八个参数,路径参数和查询是不是就招架不住了,但是请求体则可以将这七八个参数一网打尽。

尹煜的博客 5288

UniApp X 网络请求避坑指南:从 JS 到 UTS 的 JSON 数据处理全解析

摘要:UniAppX开发中处理JSON数据时,UTS强类型特性要求开发者改变JS习惯。本文对比两种主流方案:1)UTSJSONObject通过keypath访问数据,兼容JS但缺乏类型提示;2)type+泛型方案,通过定义数据类型实现强类型校验和智能提示,推荐用于固定数据结构。文章详细演示了两种方式的具体实现、转换方法及实战案例,并提供了类型定义技巧和注意事项,帮助开发者编写更稳定高效的跨平台应用。

归梦工作室 2791

FastAPI(四)请求传参

【代码】FastAPI(四)请求传参。

Good Luck 9543

Argoverse轨迹预测实战:从数据加载到地图API应用全解析

本文详细解析了Argoverse数据集在轨迹预测中的应用,从数据加载到地图API的实战技巧全涵盖。通过具体代码示例展示如何高效处理轨迹数据、实现可视化及基础预测模型,帮助开发者快速掌握自动驾驶轨迹预测的核心技术。特别介绍了Argoverse地图API的深度应用和性能优化经验。

weixin_29182481的博客 242

【吃瓜教程】周志华西瓜书课后习题第一章答案

第一章 1.1表1.1中若只包含编号为1和4的两个样例,试给出相应的版本空间。 编号 色泽 根蒂 敲声 好瓜(标记) 1 青绿 蜷缩 浊响 是Y 4 乌黑 稍蜷 沉闷 否N 知识储备: 假设空间: 所有假设组成的空间 版本空间:与训练集一致的假设集合 从假设空间到版本空间算法大致如下: 1.删除与正例不一致的假设且删除与反例一致的假设 2.删除与正例不一致的假设 3.删除与反例一致的假设 具体选择哪种

MaxQuYY的博客 8371

4. fastApi请求体详解

fastApi请求体数据处理详解

Jesse_Kyrie的博客 3928

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 708

fastapi_No.4_请求体参数详述

详细讲解了FastAPI中引入请求体参数的三种方法,以及三种方法对应的限制字段的方法

Ethan's Blog 1621

手搓UDS Bootloader|全网独家复现0x10诊断会话控制、详解会话跳转规则与S3超时机制、助力ECU在线刷写、固件迭代、车规安全升级落地

在车载UDS诊断(ISO 14229)与Bootloader固件升级架构中,0x10诊断会话控制服务是所有高级诊断、固件刷写功能的前置核心与权限管控入口,属于UDS基础必实现服务。车载ECU通过分级会话模式,隔离常规故障诊断、高级标定、固件重编程等高、低权限操作,从协议层面保障车载电控系统的安全性与稳定性。多数嵌入式开发者开发UDS Bootloader时,仅简单实现会话切换报文应答,未吃透会话强制跳转规则、S3安全超时机制、会话权限绑定、APP在线刷写跳转逻辑。

getusushu的博客 465

MFC C++ 中实现跨平台(WindowsLinux)的远程桌面控制

**输入捕获**:在显示窗口中捕获鼠标/键盘事件(重写 `OnLButtonDown`、`OnMouseMove`、`OnKeyDown` 等),将事件坐标/键值通过网络发送到服务端。- **显示窗口**:使用 `CStatic` 或自定义 `CWnd` 派生类显示远程桌面图像(通过 `StretchDIBits` 绘制解压后的像素数据)。// 转换为相对坐标。- **Wayland 支持**:需使用 `libweston` 或 `xdg-desktop-portal`,较复杂,建议优先支持 X11。

寒寒豆豆软件公司的博客 155

【Fastapi】参数获取,json和query

花了半个月的时间看了一本小说,懈怠了…今天更新下fastapi框架的参数获取。

zz001357的博客 1614

2025年抖音面试:商业生态与安全质量运营技能要求及面试

在商业生态与安全岗的质量运营工作中,规则运营职责占据着极为重要的地位,它是保障内容风控质量的关键环节。

王国平的博客 609

FastAPI的路由和请求参数

Python中的枚举数据类型:是指列出有穷集合中的所有元素,即一一列举的意思。在Python中,枚举可以视为是一种数据类型,当一个变量的取值只有几种有限的情况时,我们可以将其声明为枚举类型。路径参数 emp_id 的值将作为参数传递给你的函数。请求参数,通过路由路径携带的方式:我们称之为路由传参。参数也叫:路由参数。如果你有一个接收路径参数的路径操作,但你希望预先设定可能的有效参数值,则可以使用标准的 Python Enum 类型。路由是把客户端请求的url路径与视图函数进行绑定映射的一种关系。

python全栈 712

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

路由传参以及注意事项

什么是路由传参:FastAPI用来开发后端的API接口,客户端可以发送请求,当请求传参是通过路由路径的话,就是路由传参。传参作用:传参就是客户端传给后端,后端解析出传参数据,后端根据这个条件去数据库捞对应的数据再返回。注意点3:路由传参只会传一些简单的值,因为传的参数会作为地址的一部分,而地址又有长度限制。没数据库时:让同一个接口函数,根据不同输入,执行不同逻辑 / 返回不同结果。解决方法:将/emp/all提前,因为路由是按照顺序匹配的。注意点二:路由路径完全相同,请求函数不同时,也不会报错。

fly_sunnn的博客 43

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【FastAPI 完整版】路由与请求参数详解(query、path、params、body、form 完整梳理)- 基于 FastAPI 完整版

本文系统讲解FastAPI框架中的四种核心传参方式:路径参数(Path)、查询参数(Query)、请求体参数(Body)和表单参数(Form)。路径参数嵌入URL路径,用于精准资源操作;查询参数通过URL?后拼接,适用于筛选查询;请求体参数通过JSON格式传输数据,适合增删改操作;表单参数专为传统HTML表单设计。文章详细分析每种参数的使用场景、语法规则、类型校验和混合使用技巧,并提供可直接运行的代码示例。特别强调GET请求与POST类请求在参数传递上的本质区别,以及FastAPI通过类型注解实现的自动校验

weixin_51306394的博客 1094

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

fastapi 传参以及参数校验

这段代码把路径参数 user_id,item_id 的值传递给路径函数的参数 user_id,item_id并使用 Path 对 user_id 和 item_id 的类型和值做了限制。

wangqiang996的博客 792

FastAPi学习_1

1.什么是FastAPI FastAPI是一种现代,快速(高性能)的Web框架,用于基于标准Python类型提示使用Python 3.6+构建API。 特点: 快速:非常高的性能,看齐的NodeJS和围棋(感谢Starlette和Pydantic)。现有最快的Python框架之一。 快速编写代码:将功能开发的速度提高大约200%至300%。 错误更少:减少约40%的人为错误(开发人员)。 直观:强大的编辑器支持。完成无处不在。调试时间更少。 简易:旨在易于使用和学习。减少阅读文档的时间。 短:最小化代码重

m0_47671192的博客 671

fastapi 根据前端传参不同的接收参数

参数类型接收方式使用场景路径参数Path()RESTful API 资源标识查询参数Query()过滤、分页、搜索请求体Pydantic 模型或Body()创建、更新数据表单参数Form()HTML 表单提交文件参数File()文件上传请求头Header()认证、元数据CookieCookie()会话管理根据不同的需求选择合适的参数类型即可。

weixin_42113341的博客 389

Python后端框架FastAPI入门

用python的装饰器@app.get()定义路由,如下返回一个python字典数据时,会被FastAPI自动转换成json格式。

weixin_51355600的博客 703

FlaskAPI-路径参数、查询参数

在 Flask 中,路径传参是一种常见的传递数据的方式。通过在 URL 路径中指定参数,可以让视图函数根据不同的参数值来返回不同的内容。这种方式可以用于根据用户请求的不同资源(如用户 ID、产品编号等)来提供定制化的响应。

weixin_53333436的博客 1443

fastapi教程

创建app实例 → 用装饰器定义接口 → 用Uvicorn启动;数据校验靠Pydantic模型(请求体/响应模型),不用手动写校验逻辑;依赖注入用于复用通用逻辑(分页、鉴权),异常处理统一返回格式,跨域支持前后端分离;/docs是自带的交互式文档,开发时测试接口超方便。

qq_39697468的博客 503

FastAPI学习-RequestBody请求体

FastAPI源码分析-RequestBody请求体 GET操作不能使用RequestBody,POST/PUT/DELETE/PATCH可以。 RequestBody请求体 请求体使用前,必须要引入pydantic库中的BaseModel类进行声明,传入前创建相应的数据模型 from fastapi import FastAPI from pydantic import BaseModel ...

愤怒的小兵 1827

FastAPI比Django更简便的秘密

但是要注意后端数据库中如果定义的字段是int类型,前端可以用字符串去接收,因为后端会做转化,将可转为整形的字符串转换为整形,当然float类型依旧除外,若小数点后面是0的话可以转换成功(比如:18.0),但是若是这种(18.1,18.2,18.3)等。小数点后面不是0的会直接报异常。字段设置和Django并无太大差异,对于有过DJango基础的人士非常友好,Django继承的是models中的字符类型,然而falstAPI继承的则是tortoise中的fields。一种是问号传参,可以不用占位符。

B2860536724的博客 222

FastAPI重要知识点补充---Python Web 路由

路由 = 请求地址 + 对应执行的函数后端根据/login这个路径,找到提前绑定好的函数并执行,这个**“路径匹配 + 函数调用”**的机制,就叫路由。你可以理解为:路由就是 Web 框架里的“导航员”。路由 = 地址 + 函数方法 + 路径 + 函数 + 参数传参分三种:路径参数、查询参数、请求体大型项目一定要用路由分组(Router)匹配顺序:从上到下,精确优先。

2301_80386114的博客 485

《解锁 Python 依赖注入(DI)的实战潜力:三种实现方式、代价权衡与可测试性完整案例》

本文探讨了Python中依赖注入(DI)的实现方式、代价权衡及实战应用。Python凭借其动态特性,通过显式传参、工厂函数和容器框架三种方式优雅实现DI,显著提升代码可测试性和可维护性。显式传参简单直接但可能导致参数膨胀;工厂函数集中管理依赖但增加间接性;容器框架自动化程度高但学习成本较大。通过电商支付案例,展示了如何避免全局单例污染,采用DI实现95%以上的单元测试覆盖率。总体而言,Python中DI高度可行,合理选择实现方式能有效降低50%维护成本,特别适合从单体应用到微服务的演进。

铭渊老黄 1072
上一篇: windows调用C++动态库BOOL未定义
下一篇: python socket
越甲八千
博客等级 码龄11年 2959粉丝 553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值