v3.0.2
- 新增
- multipart/form-data 文件上传支持
- 在接口类中新增
files字段,框架在构建请求时自动透传至 multipart 文件构建器,支持Dict[str, Tuple]与List[Tuple[str, Tuple]]两种形态。 - 生成的接口类在需要时会内置
files: Union[Dict[str, Any], List[Tuple[str, Any]]]字段(含描述元数据)。 - Mock 服务新增上传接口:
/api/files/upload、/api/files/batch-upload。 - 示例:
- 在接口类中新增
- multipart/form-data 文件上传支持
@define(kw_only=True)
@router.post("/api/files/upload")
class UploadFileApiFilesUploadPostAPI(BaseAPI[FileUploadDataResponse]):
"""真实的文件上传接口,支持multipart/form-data格式,可以上传实际文件"""
@define
class RequestBodyModel:
description: Optional[str] = field(
default=None, metadata={"description": "文件描述"}
)
category: Optional[str] = field(
default="general", metadata={"description": "文件分类"}
)
request_body: RequestBodyModel
# 新增files字段
files: Union[Dict[str, Any], List[Tuple[str, Any]]] = field(
metadata={"description": "file: 要上传的文件"}
)
response: Optional[FileUploadDataResponse] = field(default=FileUploadDataResponse)
endpoint_id: Optional[str] = field(default="upload_file_api_files_upload_post")
# 单文件上传(键为 "file")
res = sys_apis.UploadFileApiFilesUploadPostAPI(
request_body=sys_apis.UploadFileApiFilesUploadPostAPI.RequestBodyModel(
description="test", category="test"
),
content_type=ContentType.MULTIPART,
files={"file": ("test.txt", b"test content", "text/plain")},
).send()
# 批量上传(同键多文件)
res = sys_apis.BatchUploadFilesApiFilesBatchUploadPostAPI(
request_body=sys_apis.BatchUploadFilesApiFilesBatchUploadPostAPI.RequestBodyModel(
project="test", version="test"
),
content_type=ContentType.MULTIPART,
files=[
("files", ("test.txt", b"test content", "text/plain")),
("files", ("test2.txt", b"test content2", "text/plain")),
],
).send()-
问题修复
- 修复 anyOf/oneOf 依赖模型遗漏:穿透 Union/List/Dict 的子类型执行 tag 递归传播,解决如部分接口中部分依赖模型未在models.py中生成的问题。
- 分组模型收集补强(依赖闭包):按 tag 收集后追加依赖闭包,防止极端情况下的依赖遗漏。
- 内联请求体 required 正确化:为内联的
RequestBodyModel正确填充required集合,保持与组件 schema 一致。 - 修复请求体是List[attr_instance]时,无法反序列化的问题,放宽request_body字段限制
- 修复接生成定义时对于anyOf字段有null时未添加Optional类型的问题
- 修复Union结构化钩子处理typing泛型失败的问题
-
内部优化
- 优化动态导入登录模块方式
-
迁移建议
- 如遇
models.py中依赖模型缺失,升级至本版本后会自动生成;无需手动干预。
- 如遇
-
测试与稳定性
- 新增/调整了 tag 传播与 requestBody 行为的单测,整体用例通过率保持稳定。
-
关键变更
- 上传接口支持
- anyOf/oneOf 依赖生成修复与分组闭包补强
- 内联
required正确化
-
升级方式
pip install -U aomaker
# 或
pip install aomaker==3.0.2Full Changelog: v3.0.1...v3.0.2