首页 文章

Swagger:使用JAX-RS Map进行身体参数

提问于
浏览
1

我正在尝试在现有的JAX-RS REST项目中设置Swagger来记录我们的API .

对于我们接受JSON请求体的操作,我们一直在使用这个习语:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value="Some operation")
@ApiImplicitParams(value={
        @ApiImplicitParam(name="val1", value="Input 1", dataType="string", paramType="body"),
        @ApiImplicitParam(name="val2", value="Input 2", dataType="string", paramType="body")
})
public Response login(Map<String, Object> request) { }

通过接收Map JAX-RS将JSON对象映射到映射中以按键名访问值 . 这很好,并且避免为每个这样的操作要求模型 .

但是,Swagger扫描此类操作并自动将Map包含为请求参数 . 我的意图是我在@ApiImplicitParams注释中正确定义参数 . 有没有办法让Swagger忽略Map并只使用@ApiImplicitParams中定义的参数?

1 回答

  • 0

    我遇到了同样的问题并使用了

    public Response login(@Context Map<String, Object> request) { }
    

    这基本上隐藏了输出中的实际参数 . 注释来自

    javax.ws.rs.core
    

相关问题