主要是为了让一个实体可以用于不同的接口展示不同的字段
代码地址 把com.demo.swagger下的代码放到自己springboot项目能被spring扫描注册组件的地方就行(其他代码是demo)
@ApiGroupProperty(value={GroupsUser.Update.class},description="")用于给Model字段分组,value控制所属组,description可以设置不同的字段描述
@ApiGroupProperties(value = {@ApiGroupProperty({)}})可以包含多个@ApiGroupProperty以便给不同分组的Model字段设置不同的字段描述
@ApiGroup(GroupsUser.Save.class) 给指定接口选择用哪个分组, 注解在方法参数表示参数用的分组, 注解在方法上表示返回值用的分组
下图两个接口公用一个User实体类(在文章后面有相关代码)
左边展示的是GroupsUser.Save.class(多了id字段,name描述变了),右边的GroupsUser.Update.class,
User里面组合的Department继承了BaseModel,所以department也会根据分组展示字段,Position没有继承BaseModel,所以展示的是全部字段
Controller接口
/**
* User实体中字段有GroupsUser.Update.class才会展示
* @param user
* @return
*/
@ApiOperation(value = "修改用户")
@PostMapping("/update")
@ApiGroup(GroupsUser.Update.class)
public Response<User> update(@ApiGroup(GroupsUser.Update.class) @RequestBody User user) {
return new Response<User>();
}
/**
* User实体中字段有GroupsUser.Save.class才会展示
*/
@ApiOperation(value = "添加用户")
@PostMapping("/save")
@ApiGroup(GroupsUser.Save.class)
public Response<User> save(@ApiGroup(GroupsUser.Save.class) @RequestBody User user) {
return new Response<User>();
}
Model类代码
@Data
@ApiModel("用户实体")
public class User {
@ApiGroupProperty({GroupsUser.Save.class})
@ApiModelProperty("Id")
private Integer id;
@ApiGroupProperties({
@ApiGroupProperty(value = {GroupsUser.Save.class}, description = "姓名(描述变了)"),
@ApiGroupProperty(value = {GroupsUser.Update.class})
})
@ApiModelProperty("姓名")
private String name;
@ApiGroupProperty({GroupsUser.Save.class, GroupsUser.Update.class})
@ApiModelProperty("电话")
private String tel;
@ApiGroupProperty({GroupsUser.Save.class, GroupsUser.Update.class})
@ApiModelProperty("部门")
private Department department;
@ApiGroupProperty({GroupsUser.Save.class, GroupsUser.Update.class})
@ApiModelProperty("职位")
private Position position;
}
@Data
@ApiModel("职位实体")
public class Position {
@ApiGroupProperty({GroupsUser.Save.class})
@ApiModelProperty("Id")
private Integer id;
@ApiGroupProperties({
@ApiGroupProperty(value = {GroupsUser.Save.class}, description = "职位名称(描述变了)"),
@ApiGroupProperty(value = {GroupsUser.Update.class})
})
@ApiModelProperty("职位名称")
private String name;
@ApiGroupProperty({GroupsUser.Save.class, GroupsUser.Update.class})
@ApiModelProperty("职位备注")
private String remarks;
}
@Data
@ApiModel(description = "返回结果实体")
public class Response<T> {
/**
* 状态码
*/
@ApiModelProperty("状态码")
private int code;
/**
* 返回内容
*/
@ApiModelProperty("返回内容")
private String message;
/**
* 数据对象
*/
@ApiModelProperty("数据对象")
private T data;
}
Groups
/**
* 用户组
*
* @date 2020/11/11 11:30
*/
public class GroupsUser {
public interface Save {
}
public interface Update {
}
}