简介
knife简单来说为Swagger的UI增强版。和Swagger在代码上面的注解并没有太多不同,只需要做几个引入和配置即可。
写一个knife demo
- 引入jar包
- 因为是Swagger的增强版,所以还是需要引入Swagger的jar包
1 | xml复制代码<dependency> |
- 添加配置类
1 | java复制代码import org.springframework.context.annotation.Bean; |
- 开放静态资源
1 | java复制代码import org.springframework.context.annotation.Configuration; |
- 启动项目,访问http://{ip}:{host}/doc.html 即可。
Swagger常用注解
- @Api 描述接口类
使用位置
: 接口类上面参数
:- tags:类名。可以传多个值。
- description: 描述
1
2
3java复制代码 @Api(tags = {"文件接口"},description = "文件接口类")
public class FileController {
}
- @ApiOperation 描述接口方法
使用位置
: 写在方法上参数
:- value: 方法描述
- notes: 提示信息
1
2
3
4java复制代码 @PostMapping("/resume")
@ApiOperation(value = "续传接口",notes = "file对象从request中获取")
public Map resume(HttpServletRequest req) throws Exception {
}
- @ApiParam 描述接口方法参数
使用位置
: 写在方法参数上参数
:- name: 参数名称
- value: 参数描述
- required: 必填标志
1
2
3
4java复制代码 @PostMapping("/resume")
@ApiOperation(value = "续传接口",notes = "file对象从request中获取")
public Map resume(@ApiParam(name = "req",value = "request对象",required = true) HttpServletRequest req) throws Exception {
}
- @ApiModel 实体类描述
使用位置
: 写在实体类上参数
:- value: 实体类名称
- description: 实体类描述
1
2
3
4
5
6java复制代码 @ApiModel(value = "用户类",description = "用户实体类")
public class User {
@ApiModelProperty(value = "姓名",name = "name",required = true,example = "张三")
String name;
String password;
}
- @ApiModelProperty 实体类属性描述
使用位置
: 写在实体类参数上参数
:- value: 描述
- name: 属性名
- required: 是否必填
- hidden: 隐藏
- example: 示例
1
2
3
4
5
6java复制代码 @ApiModel(value = "用户类",description = "用户实体类")
public class User {
@ApiModelProperty(value = "姓名",name = "name",required = true,example = "张三")
String name;
String password;
}
本文转载自: 掘金