如何用openapi-generator从OpenAPI 3.0规范生成TypeScript联合类型?
实现方案
可以通过在OpenAPI规范中为status字段添加enum约束来实现需求。修改后的OpenAPI 3.0.3配置如下:
UpdateAuthzResponse: description: > 'APPROVED' or 'REQUESTED' type: object required: [status] properties: status: type: string enum: ['APPROVED', 'REQUESTED']
使用openapi-generator 6.0.0生成TypeScript代码时,会自动生成你需要的联合类型:
export interface UpdateAuthzResponse { status: 'APPROVED' | 'REQUESTED'; }
同时,Java端会生成对应的枚举类,示例如下:
public enum StatusEnum { APPROVED("APPROVED"), REQUESTED("REQUESTED"); private final String value; StatusEnum(String value) { this.value = value; } @Override @JsonValue public String toString() { return String.valueOf(value); } @JsonCreator public static StatusEnum fromValue(String value) { for (StatusEnum b : StatusEnum.values()) { if (b.value.equals(value)) { return b; } } throw new IllegalArgumentException("Unexpected value '" + value + "'"); } }
这个配置完全符合OpenAPI 3.0.3规范,且适配你当前使用的openapi-generator 6.0.0版本,无需更换工具即可满足需求。
内容的提问来源于stack exchange,提问作者Shorn
相关产品推荐
相关产品推荐

