首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Swagger区分同名的顶级类和嵌套类

如何让Swagger区分同名的顶级类和嵌套类
EN

Stack Overflow用户
提问于 2020-07-31 09:32:17
回答 1查看 266关注 0票数 0

我有一个顶级的Foo类:

代码语言:javascript
复制
public class Foo {
   int a;
   int b;
}

...and另一个顶级的Bar类,它有自己的嵌套Foo类:

代码语言:javascript
复制
public class Bar {
    Bar.Foo myBarFoo;

    public static class Foo {
        int c;
    }
}

这些类用在REST端点的请求体中。

在生成Swagger客户端时,Swagger只创建一个" Foo“类,将两个Foo对象的成员变量组合在一起:

代码语言:javascript
复制
"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“吗?如果不是,我将继续使用不同的名称。

EN

回答 1

Stack Overflow用户

发布于 2020-08-01 01:09:27

更新:假设无法做到这一点,我重命名了Bar.Foo,但也创建了它的一个空嵌套子类,以最大限度地减少在整个应用程序中必须完成的类重命名的数量:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63184547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档