从Swagger删除额外的参数

问题描述 投票:1回答:1

在Spring引导中在项目中实施Swagger。在swagger-ui参数列表中面临着很多额外参数的问题。控制器直接与内部有ManyToOne和OneToMany字段的实体一起工作,或者与从实体扩展的过滤器一起工作,由于进行链接,因此存在大量完全不需要的参数来测试api。

实体示例:

@Entity
@Table
public class Biometric {

public enum Type {
    SECURITY,
    CAMERA
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "Id", example = "0")
private Long id;

@Column
@ApiParam(hidden = true)
@ApiModelProperty(value = "Token", example = "")
private String token;

@Column
@ApiModelProperty(value = "Name", example = "")
private String name;

@Column
@ApiModelProperty(value = "State", example = "")
private Boolean state;

@Column
@ApiParam(hidden = true)
@ApiModelProperty(value = "Version", example = "")
private String version;

@Column
@ApiParam(hidden = true)
@ApiModelProperty(value = "Number of users", example = "0")
private Long users;

@Column
@ApiModelProperty(value = "Type")
private Type type;

@ManyToOne
@ApiModelProperty(value = "Company", example = "")
private Company company;
}

这里,我试图隐藏一些对于测试来说无关紧要的参数,例如使用@ApiParam的令牌和版本,但是这种关注点不适用于复杂类型。

过滤器示例:

public class BiometricFilter extends Biometric {

@ApiModelProperty(value = "City", example = "0")
private City city;


@ApiModelProperty(value = "Идентификатор района", example = "0")
private District district;
}

最后是一个示例控制器:

ApiOperation(value = "", response = Biometric.class, responseContainer = "List")
@GetMapping
public Result get(Pageable pageable, BiometricFilter biometricFilter, ServletRequest request) {

    return new Result(true, biometricRepo.findAll(BiometricSpec.find(biometricFilter), pageable));
}

经过大量的搜索之后,我得出的结论是,唯一或多或少的工作选择是重建控制器以使用DTO对象,其中嵌套类被简单的标识符类型代替,但这意味着我将不得不重建很多控制器(实际上,问题是:是否有一种方法可以不重建控制器,还是我的假设是正确的,而我必须重建一堆控制器?

警告问题,是的,需要切换到大张旗鼓。

java spring spring-boot swagger springfox
1个回答
0
投票

我使用Swagger API和更高版本的OpenAPI规范已有多年。之前我曾尝试使用SpringFox自动构建Swagger文件。这非常灵活-进行任何更改后,我们都会提供Swagger文件的更新版本。

但是我在这种方法中面临的问题很少:Spring的开发速度比SpringFox快得多,注释不能满足最终Swagger文件的所有要求,Swagger文件的最终实现未优化,并且非常“直”和“虚拟”。此外,函数类中的大量非函数代码(注释)也不是一种好方法。

并且我仅使用Swagger UI编辑器就完成了SpringFox的使用。我的Swagger文件变得更加灵活,具有更高层次的体系结构,没有不必要的垃圾,更加“简洁”。而且功能代码更简洁。

[我了解我的建议不能解决您的问题,但这只是建议,我使用自动工具4-5年,但返回到Swagger文件的手动构建]]]

© www.soinside.com 2019 - 2024. All rights reserved.