下面的示例api允许用户创建对象。用户应该能够指定name
对象的Thing
字段,而id
字段应该自动生成。
鉴于下面的设置,swagger将显示两者请求的名称和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)
}
答案 0 :(得分:0)
您可以用id
注释@ApiModelProperty(hidden = true)
字段,在这种情况下,它不会招摇地显示,但是如果用户输入了id
,它仍将被解析并分配给id
字段,因此您还需要仅使用setter
@JsonIgnore
方法
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;
}
}