拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Swagger Codegen Java Jersey1 客户端 Category 模型参考:从 Swagger 定义到生成代码的完整链路

开发工具代码生成API设计【免费下载链接】swagger-codegenswagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.项目地址https://gitcode.com/gh_mirrors/sw/swagger-codegen点击查看免费下载本篇指南以 Swagger Codegen 为 Petstore 示例生成的 Java Jersey1 客户端模型文档 Category.md 为核心系统讲解Category模型在 Swagger 2.0 规范中的原始定义、生成后的 Java 代码结构、在Pet模型中的引用关系以及这类模型文档本身是如何由模板引擎驱动产出的。读完本文你将能对照 Swagger 定义与生成代码快速定位任意模型的字段映射并理解docs/*.md模型文档的生成原理。Category 模型在生成文档中的定位samples/client/petstore/java/jersey1/目录是 Swagger Codegen 使用Java 客户端生成器 Jersey1 库对 Petstore 规范Swagger 2.0执行代码生成后得到的一份完整客户端工程。其docs/子目录下存放的是与源码一一对应的模型与 API 参考文档Category.md 即为其中的模型参考文档之一描述的是一个极简的Category分类数据对象NameTypeDescriptionNotesidLong[optional]nameString[optional]这是原文档给出的全部字段信息模型只有两个属性且都标注为可选项[optional]。下面我们结合规范定义与生成源码把这张表格背后的完整链路逐一展开。规范源头petstore 中 Category 的 Swagger 2.0 定义Category 模型并非手工编写而是由 Swagger Codegen 从规范文件解析后自动生成的。仓库中可复现该定义的两份规范文件为petstorefake.yamlYAML 格式更易读petstore.jsonJSON 格式与线上 Petstore 一致在 petstorefake.yaml 中Category 的定义如下Category: type: object properties: id: type: integer format: int64 name: type: string xml: name: Category对照生成文档的字段表可以得出完整的映射规则生成文档字段规范定义说明idtype: integer, format: int6464 位整数映射为 JavaLongnametype: string字符串映射为 JavaString[optional]不在required列表中规范中 Category 未声明required故两个字段均为可选两个关键推断可以直接从规范结构得出类型映射Swagger 的integer/int64组合在 Java 客户端中被生成为Long这与文档表格中id的类型Long完全对应可选性标注该模型没有required字段列表对比同文件中的Pet模型声明了required: [name, photoUrls]因此生成文档中两个属性都被标注为[optional]。生成源码Category.java 的字段与访问器实现与 Category.md 对应的生成源码位于 Category.java属于包io.swagger.client.model。该类的核心结构如下public class Category { JsonProperty(id) private Long id null; JsonProperty(name) private String name null; public Category id(Long id) { this.id id; return this; } ApiModelProperty(value ) public Long getId() { return id; } public void setId(Long id) { this.id id; } // name 字段的链式 setter、getter、setter 与 id 对称 // ... }从源码可以观察到生成的 Java 模型具备的通用特征同样适用于Pet、Order、Tag等模型Jackson 注解驱动序列化每个字段都标注JsonProperty(id)/JsonProperty(name)字段名直接取自 Swagger 属性名保证 JSON 序列化/反序列化时键名与规范一致链式 setterfluent APICategory id(Long id)返回this支持new Category().id(1L).name(Dogs)式的一行构建标准对象方法重写了equals、hashCode与toString其中equals基于Objects.equals逐字段比较id与nametoString以toIndentedString对多行内容做 4 空格缩进美化Swagger 注解getter 上带ApiModelProperty(value )对应文档表格中 Description 列为空的现象——因为规范中该属性未提供description字段。引用关系Category 在 Pet 模型中的嵌入Category 模型在整个 Petstore 客户端中的实际价值在于被Pet模型以对象引用的方式复用。在 petstorefake.yaml 中Pet的category属性通过$ref指向 CategoryPet: type: object required: - name - photoUrls properties: category: $ref: #/definitions/Category对应到生成的 Pet.java第 23、37、106-120 行import io.swagger.client.model.Category; private Category category null; public Pet category(Category category) { this.category category; return this; } public Category getCategory() { return category; }这说明生成器将$ref: #/definitions/Category解析为同包下的Category类型引用而非内联展开对象——引用型composition by reference模型会生成独立的 Java 类并被其他模型复用。这一点对理解生成的工程结构很重要每个 Swagger 顶层定义都对应一个独立的.java文件和一个独立的docs/*.md文档。模型文档的生成原理模板驱动的 docs 产出值得说明的是Category.md 本身也是代码生成过程的产物而非手工维护。从生成器源码与模板可以还原其产生链路生成器入口JavaClientCodegen.java 是 Java 语言族客户端生成器的核心实现负责把 Swagger 定义翻译为模型/API 的元数据并驱动模板渲染文档索引模板Java/README.mustache 中通过{{modelDocPath}}{{classname}}.md的表达式为每个模型生成指向其参考文档的链接即docs/目录下Category.md、Pet.md等文件名的由来参考文档内容模型文档表格中的 Name/Type/Description/Notes 四列分别来自模型属性名、映射后的语言类型如integer/int64→Long、Swaggerdescription与required标记决定[optional]标注。因此若要为自定义规范生成同样风格的模型文档只需以 Petstore 为范本使用 Java 客户端生成器如jersey1库对规范执行一次代码生成即可docs/目录会自动产出与每个模型一一对应的参考文档。小结从字段表读懂生成链路回到 Category.md 这张极简的属性表它实际上浓缩了 Swagger Codegen 代码生成的整条信息链规范侧Category定义于 petstorefake.yamlid为integer/int64、name为string未声明required生成侧由 JavaClientCodegen.java 解析并渲染产出 Category.java 与 Category.md使用侧Category作为对象类型被 Pet.java 通过category字段复用形成定义复用 独立文档的工程组织方式。掌握了这张表的阅读方法你就可以在samples/client/petstore/java/jersey1/docs/下其余 40 余个模型文档如 Pet.md、Order.md、Tag.md之间自由对照快速定位任意字段在规范、源码与文档三处的对应关系。赞分享开发工具代码生成API设计【免费下载链接】swagger-codegenswagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.项目地址https://gitcode.com/gh_mirrors/sw/swagger-codegen点击查看免费下载相关推荐深入解析 Swagger Codegen 生成的 Java Tag 模型从 OpenAPI 定义到 Jersey1 客户端代码深入解析 Swagger Codegen 生成的 Java Tag 模型从 OpenAPI 定义到 Jersey1 客户端代码 导读 本文以 Swagger开发工具代码生成API设计Swagger Codegen 生成的 Jersey2 客户端模型 ModelApiResponse从 OpenAPI 定义到 Java POJO 的完整链路Swagger Codegen 生成的 Jersey2 客户端模型 ModelApiResponse从 OpenAPI 定义到 Java POJO 的完整链路开发工具代码生成API设计swagger-codegen 生成的 Dart 客户端模型 Category从 OpenAPI 定义到 Category.dart 的完整解析swagger codegen 生成的 Dart 客户端模型 Category从 OpenAPI 定义到 Category.dart 的完整解析 导读 Cat开发工具代码生成API设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门