现在用一个swagger查一下接口是否可以成功。但是,看不见方法里面的必须要传的字段呢?
1、swagger2和swagger3,有些区别,你可以查看两个版本具体的注解使用情况。
以下说的是基于swagger3的,有些注解是兼容swagger2的
2、如果有明确的参数,你可以使用@Parameter(description = "")对每个参数进行说明;
3、如果参数是一个对象,你可以在对象类名或者属性上使用注解@Schema(description = ""),这样在swagger-ui里面,有一个Schema模块,可以看到该对象的字段说明;
4、如果你的参数是类似于Map这种,比说你的request,可以在方法上添加@Parameters,swagger2是用 @ApiImplicitParams({
@ApiImplicitParam(name = "", value = "", required = true, dataType = ""),
@ApiImplicitParam(name = "", value = "", required = true, dataType = ""),
}
)
把request中用到的参数都添加到注解里面进行说明。swagger注解里面的参数不影响方法逻辑,你可以当做一个注释,可以和你方法中的实际参数不一致。
PS:开发中,有句关于Map传值的说法,叫做开发一时爽,维护火葬场,尽量不要用Map传值,这个和魔法值类似。
你的代码中,如果request里面的参数不多,可以明确指定需要传递的参数,如果参数比较多,可以定义一个对象来传值。使用request.getParameter()最好是添加好注释,作为接口,开发和调用不是用一个人,需要添加详细的说明。
还少加了这个注解@ApiParam
@ApiParam
使用在方法上或者参数上,字段说明;表示对参数的添加元数据(说明或是否必填等)
name–参数名
value–参数说明
required–是否必填
@Api(value="用户controller",tags={"用户操作接口"})
@RestController
public class UserController {
@ApiOperation(value="获取用户信息",tags={"获取用户信息copy"},notes="注意问题点")
@GetMapping("/getUserInfo")
public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {
// userService可忽略,是业务逻辑
User user = userService.getUserInfo();
return user;
}
}
可以参考Swagge常用注解文档,看看对你有帮助麽
你这个接口参数都没有直接定义,swagger也看不了,得像上面那样改造下
1、你接口中没有定义参数,所以swagger看不到接口参数字段
2、使用@RequestParm注解 标明参数字段是否必传,如下图