百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#6849·grpc-gateway

支持在 OpenAPI 为特定字段用途限制已曝光的enum 值

作者: Arvinder12创建于 2026年5月25日更新于 2026年5月27日

□ 特性

问题

当使用原生-gen-openapiv2时,enum 字段总是在生成的Swagger/OpenAPI schemas中暴露出完整的enum定义.

示例

enum 资源类型 { 资源类型=0; 资源类型=1; 资源=2; 资源 类型 服务=3; 资源=4; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

信件资源请求{ 资源类型 类型=1; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

生成的OpenAPI schema 在全球暴露出所有enum值.

然而,在某些API中,我们希望:

使用原生铝进行内部强打字 生成的语言常数 enum 验证

,但仅在OpenAPI中为特定字段使用而暴露的受限制子集(或替代代表).

例如,Resources TYPE INTRNAL可能只用于内部服务,不应出现在公共API文件中.

目前唯一的工作是:

将 enum 字段改为字符串 在验证说明中手动复制 enum names 手动维持enum定义和字符串验证列表之间的同步

实例

字符串资源 类型= 1 [ (验证. rules). 字符串={ 用于: "资源类型", (原始内容存档于2013-10-10). Required Type GROUP",. "资源 类型 服务" [ . ] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? ; ; ;

这引入了:

重复的真相来源 维修负担 铝/钢丝漂移的风险 API合同中原型活性铝打字损失

** 请求的特征**

支持外地一级的OpenAPI enum投影/限制.

示例想法:

资源类型 类型= 1 [ (grpc.gateway.protoc gen openapiv2. options.openapiv2 field)=/ (原始内容存档于2018-09-30). enum 子集 : [ "资源类型", (原始内容存档于2013-10-10). Required Type GROUP",. "资源 类型 服务" [ . ] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? ; ; ;

预期行为 :

原生活字段仍为enum型 生成的 SDK 保留 enum 安全 OpenAPI 计划仅显示该字段的选定enum值 避免将enum转换为纯粹用于文档关切的字符串 其他上下文

这对于:

公众与内部API接触 部分

内容来源: grpc-ecosystem/grpc-gateway

查看 GitHub 原文在 GitHub 查看讨论