springboot swagger 同一个model 根据group 在不的api中展示不同的字段和描述
主要是为了让一个实体可以用于不同的接口展示不同的字段
代码地址 把com.demo.swagger下的代码放到自己springboot项目能被spring扫描注册组件的地方就行(其他代码是demo)
@ApiGroupProperty(value={GroupsUser.Update.class},description="")用于给Model字段分组,value控制所属组,description可以设置不同的字段描述
@ApiGroupProperties(value = {@ApiGroupProperty({)}})可以包含多个ApiGroupProperty以便给不同分组的Model字段设置不同的字段描述
@ApiGroup(GroupsUser.Save.class) 给指定controller接口选择用哪个分组, 注解在方法参数表示参数用的分组, 注解在方法上表示返回值用的分组
BaseModel,子类需要继承BaseModel 才可以让分组生效
如下图两个接口所示(在文章后面有相关代码)

1.边展示的是GroupsUser.Save.class(多了id字段,name描述变了),右边的GroupsUser.Update.class,
2.User里面组合的Department继承了BaseModel,group 生效,所以department也会根据分组展示字段,Position没有继承BaseModel,group 不生效,所以展示的是全部字段
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;
}
/**
* @date 2020/11/12 14:40
*/
@Data
@ApiModel("部门实体")
public class Department extends BaseModel {
@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 {
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)