在 swagger 的请求中隐藏属性,但在 swagger 的响应中显示

zwghvu4y  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(229)

我有一个dto类在另一个类中使用,假设它看起来像这样:

class Foo {
private String id;
private String name;
}

class Bar {
private String id;
private Foo foo;
}

foo和bar都有自己的控制器,包含POST和GET方法。
Bar POST请求如下所示:

{"id":bar1, "foo": { "id": "foo1"}}

所以foo中唯一需要的字段是id,但是响应包含了所有的Foo参数。另外,当发布Foo时,我需要提供每个参数,并且在响应中我也接收到了所有的参数。
但是现在在swagger for POST /bar控制器中,我只想显示来自Foo的必填字段-id。
有没有可能在POST /bar request swagger中隐藏其他参数,只显示id,而不在Foo的请求中隐藏它们?

6yt4nkrj

6yt4nkrj1#

您需要2个Foo类和2个Bar类,如下所示:

class FooReq { // used in request
    private String id;
}

class FooResp extends FooReq { // used in response
    private String name;
}

class BarReq {
    private String id;
    private FooReq foo;
}
class BarResp {
    private String id;
    private FooResp foo;
}

控制器方法def:

public ResponseEntity<BarResp> postBar(@RequestBody BarReq postBody)

相关问题