TypeSpec Java 数据平面(data-plane)代码生成配置详解:基于 http-client-java 生成器的完整参数指南
TypeSpec Java 数据平面data-plane代码生成配置详解基于 http-client-java 生成器的完整参数指南【免费下载链接】typespec项目地址: https://gitcode.com/GitHub_Trending/ty/typespec导读本文以typespec/http-client-java生成器内置的>license-header: MICROSOFT_MIT_SMALL generate-client-interfaces: false generate-client-as-impl: true generate-sync-async-clients: true generate-builder-per-client: true sync-methods: all enable-sync-stack: true required-fields-as-ctor-args: true enable-page-size: true use-key-credential: true use-default-http-status-code-to-exception-type-mapping: true polling: {} models-subpackage: implementation.models client-logger: true下面结合生成器源码逐项说明其含义、默认值差异与生成效果。2.1 license-header许可证头与“Code generated by”声明取值MICROSOFT_MIT_SMALL源码依据JavaSettings.setHeader()setHeader将字符串值映射为实际写入每个生成 Java 文件顶部的许可证声明。MICROSOFT_MIT_SMALL对应的结果是MIT 简版许可证头 Code generated by Microsoft (R) AutoRest Code Generator.同族取值还包括MICROSOFT_MIT、MICROSOFT_APACHE、MICROSOFT_MIT_SMALL_NO_VERSION、MICROSOFT_MIT_SMALL_TYPESPEC追加 TypeSpec Code Generator 字样等取NONE则完全省略头注释。若填写的值不在预置枚举中setHeader会把该字符串原样作为头部使用。2.2 客户端接口与实现生成策略三个联动开关generate-client-interfaces: false generate-client-as-impl: true generate-sync-async-clients: truegenerate-client-interfaces是否生成公开的客户端接口interface。默认false见 JavaSettings.java。数据平面模板关闭接口直接产出可实例化的具体类减少 API 面。generate-client-as-impl将客户端直接生成为实现类true。getBooleanValue(host, generate-client-as-impl, false)读取默认false。generate-sync-async-clients同时产出同步客户端与异步客户端两套 API。默认false见 JavaSettings.java。数据平面服务如存储、搜索、认知服务等通常需要同步/异步双形态因此模板统一开启。值得说明的是这三项在生成器的内置默认SETTINGS_MAP中已被预先固定generate-client-interfaces: false、generate-client-as-impl: true、generate-sync-async-clients: true见 TypeSpecPlugin.java与模板一致。2.3 generate-builder-per-client每个客户端一个 Buildergenerate-builder-per-client: true源码读取getBooleanValue(host, generate-builder-per-client, false)JavaSettings.java。默认值false数据平面模板建议true。开启后每个客户端都会生成配套的*ClientBuilder用于配置 endpoint、凭据、pipeline 等。注意内置默认SETTINGS_MAP中该值为falseTypeSpecPlugin.java因此在非集成场景需要显式开启才能得到 Builder 形态。2.4 sync-methods 与 enable-sync-stack同步方法体系sync-methods: all enable-sync-stack: truesync-methods控制同步方法的生成范围。取值解析自SyncMethodsGeneration.fromValue(...)默认essentialJavaSettings.java。all为每个异步方法都生成同步版本essential仅为“必需”的核心方法生成同步版本none不生成同步方法。enable-sync-stack是否启用同步调用栈基于阻塞式 HTTP 客户端而非“同步包装异步”。syncStackEnabled默认falseJavaSettings.java模板建议true以获得真正的同步执行路径。2.5 required-fields-as-ctor-args必需字段进构造函数required-fields-as-ctor-args: true源码读取getBooleanValue(host, required-fields-as-ctor-args, false)JavaSettings.java。默认值false内置SETTINGS_MAP默认亦为trueTypeSpecPlugin.java。开启后模型中带required的必填属性会直接成为构造函数参数配合不可变模型output-model-immutable使用能在编译期强制调用方提供必填字段避免运行时漏配。2.6 enable-page-size分页支持enable-page-size: true源码读取getBooleanValue(host, enable-page-size, false)JavaSettings.java。默认值false模板建议true。开启后为带pageSize的分页操作生成按页大小控制的分页客户端方法PagedIterable / PagedFlux 形态方便调用方按需控制每次请求的 pageSize 参数。2.7 use-key-credentialKeyCredential 鉴权use-key-credential: true源码读取getBooleanValue(host, use-key-credential, false)JavaSettings.java。默认值false。内置默认中use-key-credential: true并注释说明“默认采用 KeyCredential不要求 TypeSpec 服务端显式声明 AzureKeyCredential”TypeSpecPlugin.java。开启后客户端采用 KeyCredentialAPI Key 类凭据认证而不是 Azure Active Directory 的 TokenCredential。模板以注释空行将“鉴权相关”参数与前面的“生成形态”参数分组便于阅读时按语义区分。2.8 use-default-http-status-code-to-exception-type-mappinguse-default-http-status-code-to-exception-type-mapping: true源码读取getBooleanValue(host, use-default-http-status-code-to-exception-type-mapping, false)JavaSettings.java。默认值false模板建议true。开启后服务未显式声明错误响应时生成器按 HTTP 状态码套用默认的异常类型映射如 4xx/5xx 映射到对应的HttpResponseException子类避免所有错误都退化成通用异常。2.9 polling{}——长轮询LRO配置polling: {}源码解析polling以 JSON 映射读取为MapString, PollingSettingsJavaSettings.java。空对象{}表示“不自定义任何操作的轮询策略全部使用默认轮询设置”。源码中若解析结果非空且不含default键会自动补入一个默认的PollingSettings读取单操作配置时按操作 ID 前缀匹配最具体的键未命中则回落到defaultJavaSettings.java。更复杂的用法是为特定操作指定轮询策略例如polling: default: strategy: operation-location OpGroup_OperationName: strategy: locationPollingSettings支持按操作粒度覆盖轮询策略与轮询间隔覆盖数据平面常见的 Operation-Location、Location、Azure-AsyncOperation 等模式。2.10 models-subpackage模型子包路径models-subpackage: implementation.models源码读取getStringValue(host, models-subpackage, ...)默认值取决于 flavorAzure 风格下为models否则为空JavaSettings.java。模板将模型放至implementation.models子包表明这些模型属于内部实现细节、不对外暴露配合generate-client-interfaces: false收紧公开 API 面。2.11 client-logger客户端日志client-logger: true源码读取getBooleanValue(host, client-logger, true)JavaSettings.java。默认值true模板保持开启为客户端生成ClientLogger日志基础设施便于请求/响应诊断。三、参数生效链路从 tspconfig.yaml 到 Java 模板数据平面配置并不直接写在data-plane.md中生效data-plane.md本质是一份“配置参考清单”。实际使用方式有两种通过tspconfig.yaml传入 emitter 选项。以生成器自带的端到端测试工程为例tspconfig.yamlemit: - typespec/http-client-java options: typespec/http-client-java: emitter-output-dir: {project-root}/tsp-output partial-update: true generate-samples: true generate-tests: true examples-dir: {project-root}/tsp/examples flavor: Azureemitter 侧解析这些选项后emitter/src/common/operation.ts 负责构建操作模型在 TypeSpecPlugin.java 中将namespace、output-folder、service-name、required-fields-as-ctor-args、enable-sync-stack、models-subpackage等选项逐一写入SETTINGS_MAP。依赖内置默认值。SETTINGS_MAP静态初始化块中已按数据平面语义预置了大量默认值TypeSpecPlugin.javadata-plane: true、sdk-integration: true、license-header: MICROSOFT_MIT_SMALL_TYPESPEC、sync-methods: all、enable-sync-stack: true、enable-page-size: true、client-logger: true、required-fields-as-ctor-args: true、use-key-credential: true等与data-plane.md模板高度吻合。随后JavaSettings通过getBooleanValue/getStringValue/getIntegerValue系列方法读取这些键并填充 60 余个字段如dataPlaneClient、pageSizeEnabled、useKeyCredential、syncStackEnabled供ClientMapper、ClientMethodMapper、ModelMapper、ConvenienceMethodTemplateBase、PomTemplate等映射器与模板在生成阶段分支使用参见 contenteditable="false">【免费下载链接】typespec项目地址: https://gitcode.com/GitHub_Trending/ty/typespec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →