在 Swagger 中更改方法正文请求中的参数

Change the parameters in body request of a method in Swagger

我一直在从事一个项目,并尝试使用 Swagger-2.0 对其进行记录。在这个项目中,由于一些安全问题,控制器中每个具有 return 类型对象的方法都应将 return 对象更改为完全平坦的对象。为此,我们在每个方法上方使用一些自定义注释,控制器本身将对象转换为 return 类型。我的意思是,方法 return 的对象与传递给浏览器的对象不同。对于控制器中方法的输入参数,我们也有同样的事情。这意味着用户必须为方法发送一个与方法的输入参数不同的对象。下面有一个示例方法作为示例。

@RequestView(InputParamView.class)
@ResponseView(ReturnObjectView.class)
@RequestMapping(value = "/someMethod", method = RequestMethod.POST)
public ReturnObject someMethod(@RequestBody InputParam inputParam) {
      //do some thing
}

问题是如何配置Swagger来识别InputParamViewReturnObjectView作为输入参数和return类型的方法。我们通过在每个方法上方使用 ApiOperation 注释来为方法的 return 类型执行此操作,如下所示。

@ApiOperation(value = "/someMethod", response = ReturnObjectView.class)

不幸的是,我还没有找到对输入参数做同样事情的方法。我想知道是否有人可以通过适当的例子帮助我解决这个问题。

如果您的对象通常具有一对一映射,例如,InputParam => InputParamViewReturnObject => ReturnObjectView 那么它非常简单解决这个问题。您需要做的就是在您的摘要中设置备用类型规则。

docket
    .directModelSubstitute(InputParam.class, InputParamView.class)
    .directModelSubstitute(ReturnObject.class, ReturnObjectView.class)

现在,如果您有像 InputParam => [Method1InputParamView, Method2InputParamView] 这样的一对多映射,那么它会涉及更多一些,并且它与支持 @JsonView #601.

相关联

注意: 转载自 the github issue 的答案。请关注 github 话题以获取更多有关选项的讨论。