[英]Hide certain fields from a spring request body in swagger
下面的示例api允许用户创建对象。 用户应该能够指定Thing
对象的name
字段,而id
字段应该自动生成。
下面给出的设置,招摇将同时显示名称和要求的东西,用户可以输入,以及显示两个字段作为可选id字段。 实际上,对于请求,应该要求name
而用户永远不应输入id
。
(注意:创建成功时返回的对象应包括生成的id字段)
我想一个选项是创建一个相同的Thing对象的副本,除了缺少id
字段(“ThingCreationRequestObject”)。
这是可接受的解决方案吗? 似乎应该有一种方法不需要维护两个基本上代表同一事物的对象。
@RequestMapping(value = "/thing", method = RequestMethod.POST)
Thing createThing(@RequestBody Thing thing) {
// add thing to database, including a generated id
// return thing object, now including the generated id
}
public class Thing {
private String id;
private String name;
}
// Swagger
Thing {
id (string, optional),
name (string, optional)
}
您可以使用@ApiModelProperty(hidden = true)
来注释id
字段,在这种情况下,它将被swagger隐藏,但是如果用户输入了id
那么它将被解析并分配给id
字段,因此您还需要注释setter
只有@JsonIgnore
的id的方法
public class Thing {
@ApiModelProperty(hidden = true)
private String id;
private String name;
public String getId() {
return id;
}
@JsonIgnore
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.