nay*_*kam 5 api rest yaml swagger-2.0 swagger-codegen
我正在使用 swagger-codegen-maven-plugin (2.2.1) 从 YML 配置生成 java 和 typescript 代码类文件。我有两个问题。
如何在 YML 中定义枚举属性数组?
如何在 YML 中将地图属性枚举定义为键,将布尔值定义为值?
让我知道这可能还是有任何解决方法?目前,我在 java 和 typescrtipt 中定义了枚举类并将其作为字符串传递。谢谢。
DataInfo:
type: object
properties:
enumTest: -- works fine
type: string
enum:
- one
- two
enumTestArray: --failing to generate code
type: array
items:
type: string
enum:
- one
-two
testMap: -- works fines generate Map<String, Boolean> and { [key: string]: boolean; };
type: object
additionalProperties:
type: boolean
Run Code Online (Sandbox Code Playgroud)
更新:
与第一个问题相关:定义枚举属性数组。swagger-codegen-maven-plugin 生成无效的 java 类文件,如下所示: 生成 <、> 和 " 字符的外观和问题。
@XmlType(name="List<EnumTestArrayEnum>")
@XmlEnum
public enum List<EnumTestArrayEnum> {
ONE(List<String>.valueOf(""one"")), TWO(List<String>.valueOf(""two""));
private List<String> value;
List<EnumTestArrayEnum> (List<String> v) {
value = v;
}
public String value() {
return value;
}
public static List<EnumTestArrayEnum> fromValue(String v) {
return valueOf(v);
}
}
Run Code Online (Sandbox Code Playgroud)
如何在 YML 中定义枚举属性数组?
您的enumTestArray示例几乎是正确的——您只需要在“-”和“两个”之间留一个空格即可使 YAML 有效:
enumTestArray:
type: array
items:
type: string
enum:
- one
- two # <----
Run Code Online (Sandbox Code Playgroud)
如何在 YML 中将地图属性枚举定义为键,将布尔值定义为值?
在 OpenAPI/Swagger 中,映射键是任意字符串,并且不可能限制键名或格式。您可以在description.
或者,由于键是已知的(仅限于某些已知的枚举),您可以将所有可能的键定义为可选属性。不优雅,但它可能适合你。
testMap:
type: object
properties:
one:
type: boolean
two:
type: boolean
...
Run Code Online (Sandbox Code Playgroud)
还有建议添加对 的支持patternProperties,这将允许将键名限制为正则表达式。
| 归档时间: |
|
| 查看次数: |
12618 次 |
| 最近记录: |