用途:把 OpenAPI 文件、URL 或粘贴的文档转换为 django-modern-rest 的传输层骨架,输出类型化 DTO、控制器、路由、文档接线和最小测试,默认不生成业务逻辑。工作流要求先读规范,确认 openapi 为 3.1.x 或更新版本,提取 tags、paths、operationId、参数、请求体、响应码、可复用 schema 与安全声明,并尽早识别 oneOf、anyOf、allOf、discriminator、多媒体类型、callbacks、webhooks 等复杂结构。用户提供既有规范且期望复现时进入 spec-fidelity 模式,尽量保持公开契约,不静默规范化路径、丢 tag、把媒体类型收敛为 JSON 或替换源元数据。新项目优先 wemake-django-template,已有仓库不强行改造;依赖工具优先 uv,仓库已用 Poetry 则用 Poetry,仅在明确要求时用 pip;安装 django-modern-rest 及所需 extras,Pydantic 代码至少 django-modern-rest[pydantic],并倾向加入 [msgspec],仅在需要 JWT 时加 [jwt];目标 Python 3.11+、Django 5.0+。DTO 映射:请求体 Body[...]、查询 Query[...]、路径 Path[...]、头 Headers[...]、Cookie Cookies[...],复用共享 schema,保留线格式字段名,必要时用别名,复杂联合与判别优先 PydanticSerializer。每个操作一个控制器,按 operationId 或资源加动词命名,返回 schema 合法占位数据或回显数据,204/304 用 @modify(status_code=HTTPStatus.NO_CONTENT) 与 -> None,在持久化、编排、鉴权、外部集成处留 TODO。用 Router([...], prefix=...) 组合路由,根 URL 用 include((router.urls, 'app_name'), namespace='...'),接线 build_schema、OpenAPIJsonView、RedocView、SwaggerView、ScalarView,保留源路径契约。生成最小冒烟测试覆盖路由状态码与响应形状,文档端点可用性检查。遇到库不支持的媒体类型须先询问用户选择 minimal-working 或 strict-stub 模式,不实现完整编解码。完成前做保真度检查,阻塞项包括公开路径、源方法、主要媒体类型、重要响应码/头、安全方案、顶层元数据与文档端点。限制:不编造业务逻辑、模型、服务、权限或完整鉴权,不静默丢失契约;部分环境创建、安装命令与运行命令依赖用户选择的具体工具与仓库现状。
dmr-openapi-skeleton
编程与开发
更新于 10-16 01:27