我有一个顶级的Foo类:
public class Foo {
int a;
int b;
}...and另一个顶级的Bar类,它有自己的嵌套Foo类:
public class Bar {
Bar.Foo myBarFoo;
public static class Foo {
int c;
}
}这些类用在REST端点的请求体中。
在生成Swagger客户端时,Swagger只创建一个" Foo“类,将两个Foo对象的成员变量组合在一起:
"Foo": {
"type": "object",
"properties": {
"a": {"type": "integer","format": "int32"},
"b": {"type": "integer","format": "int32"},
"c": {"type": "integer","format": "int32"},
},
"title": "Foo"
},这是有问题的,因为并非所有属性对于两种用途都是有效的。
如果我在嵌套类中为Foo使用一个不同的名称,比如Foo2,那么Swagger将生成两个不同的对象,所以问题就解决了。
我的问题是,我仍然可以通过Swagger codegen生成不同的对象,同时保持两个类名为"Foo“吗?如果不是,我将继续使用不同的名称。
发布于 2020-08-01 01:09:27
更新:假设无法做到这一点,我重命名了Bar.Foo,但也创建了它的一个空嵌套子类,以最大限度地减少在整个应用程序中必须完成的类重命名的数量:
public class Bar {
Bar.Foo2 myBarFoo;
public static class Foo2 {
int c;
}
public static class Foo extends Foo2 {}
}Swagger codegen为客户端创建了一个新的Foo2对象,只使用"c“属性,而顶级Foo又回到了只有"a”和"b“的状态。由于增加了子类,大多数应用程序可以在不需要使用Bar.Foo2的情况下继续使用Bar.Foo。
https://stackoverflow.com/questions/63184547
复制相似问题