swagger使用泛型作为返回值类型的坑

Published on 2020-12-22 20:50 in 分类: 博客 with 狂盗一枝梅
分类: 博客

出问题的代码形式如下代码所示

@GetMapping(value = "/getPage")
@ApiOperation(value = "通过对象特征获取对象列表分页")
@ApiResponses(@ApiResponse(code = 200, message = "处理成功" , response = Result.class))
public Result<IPage<User>> getPage(
    @RequestParam(value = "pageNo") Integer pageNo,
    @RequestParam(value = "pageSize") Integer pageSize,
    @ModelAttribute User user) {
    //业务代码
}

乍一看好像没啥问题,但是在swaggerUi中response body无法显示IPage<User>,原因出在返回值这个Result<>泛型上,由于泛型的特殊性,如果指定 response = Result.class,swagger会默认识别泛型类型为Object类型。

解决方法就是删除response = Result.class这段代码,让swagger自动识别泛型的类型,手动指定response类型反而会出问题,或者整个删除

@ApiResponses(@ApiResponse(code = 200, message = "处理成功" , response = Result.class))

这样在swagger ui中就能正确渲染出泛型类型的json串了。


#java #swagger
目录