我正在尝试在现有的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中定义的参数?
答案 0 :(得分:0)
我遇到了同样的问题并使用了
public Response login(@Context Map<String, Object> request) { }
这基本上隐藏了输出中的实际参数。注释来自
javax.ws.rs.core