Spring boot 定制Springfox一代
我正在使用springboot和springfox来生成swagger API 我对springfox有两个问题: 1) 它不支持继承 2) 它不支持JsonAnyGetter(就像我一样) 我是否可以重写json生成以在运行时自定义json和 对于第一种情况,我想为每个子类型添加“allOf” 对于第二种情况,我想添加一个自定义字段 我的类是分页的泛型类。在“resourceName”字段下返回分页信息和列表。这是一个参数。 狗的页面包装将导致:Spring boot 定制Springfox一代,spring-boot,swagger,springfox,Spring Boot,Swagger,Springfox,我正在使用springboot和springfox来生成swagger API 我对springfox有两个问题: 1) 它不支持继承 2) 它不支持JsonAnyGetter(就像我一样) 我是否可以重写json生成以在运行时自定义json和 对于第一种情况,我想为每个子类型添加“allOf” 对于第二种情况,我想添加一个自定义字段 我的类是分页的泛型类。在“resourceName”字段下返回分页信息和列表。这是一个参数。 狗的页面包装将导致: { "paging": { ...pagi
{
"paging": { ...paging info ...},
"dogs": [
.. list of dogs ..
]
}
类别:
@ApiModel(value = "Page", description = "Page of results")
public class PageWrapper<T> {
@JsonIgnore
private List<T> objects;
@JsonProperty("paging")
private Paging paging;
@JsonIgnore
private String objectsName = "data";
public PageWrapper(Page<T> page, String objectsName) {
if (StringUtils.isNotBlank(objectsName)) {
this.objectsName = objectsName;
}
this.objects = page.getContent();
this.paging = new Paging(page.getTotalElements(), page.getNumber() * page.getSize() + 1, page.getSize());
}
@JsonAnyGetter
@ApiModelProperty(name = "content", value = "Page content")
public Map<String, List<T>> data() {
Map<String, List<T>> datas = new HashMap<>();
datas.put(objectsName, objects);
return datas;
}
...
@ApiModel(value=“Page”,description=“结果页”)
公共类页面包装器{
@杰索尼奥雷
私有列表对象;
@JsonProperty(“分页”)
专用寻呼;
@杰索尼奥雷
私有字符串objectsName=“数据”;
公共页面包装器(页面、字符串对象名称){
if(StringUtils.isNotBlank(objectsName)){
this.objectsName=objectsName;
}
this.objects=page.getContent();
this.paging=新分页(page.getTotalElements(),page.getNumber()*page.getSize()+1,page.getSize());
}
@JsonAnyGetter
@ApiModelProperty(name=“content”,value=“页面内容”)
公共地图数据(){
映射数据=新的HashMap();
datas.put(objectsName,objects);
返回数据;
}
...
虽然通过网络公开继承层次结构被认为是一种不好的形式,但仍有一些问题需要解决。它很可能在下一个版本中实现。但是,尚不清楚您对@JsonAnyxxxx
注释的期望值。如果目的是始终具有分页对象,则它们意味着开放式契约ct(分页包装器)为什么不在规范中明确说明呢?我真的不知道如何不公开继承,这是另一个主题,但我也可能对它感兴趣:)例如,如何公开同时包含dogs和cat的PetList?关于@JsonAnyGetter,我用它来更改json中返回的对象的字段名。我可以“newpagewrapper(list,“dogs”);”和另一个服务中的“newpagewrapper(list,“cats”)”。我必须用资源名称命名列表。