knife4j 基于swagger的文件优化

阅读数:165 评论数:0

跳转到新版页面

分类

python/Java

正文

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

参考文档:https://doc.xiaominfo.com/

UI访问路径 :http://ip:port/doc.htm

一、项目依赖

内部已集成io.springfox

 <dependency>
 	<groupId>com.github.xiaoymin</groupId>
	<artifactId>knife4j-spring-boot-starter</artifactId>
	<version>2.0.0</version>
</dependency>

二、从swagger2到knife4j

去掉原来swagger,加入knife4j依赖

<!-- swagger2 -->
<!--<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>-->

<!-- knife4j -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>

在Swagger2配置类上加入@EnableKnife4j注解

三、常用注解

1、用于controller为上

(1)@Api  对请求类的说明

属性名称 备注
value url的路径值
tags 如果设置这个值、value的值会被覆盖
description 对api资源的描述
basePath 基本路径
position 如果配置多个Api 想改变显示的顺序位置
produces 如, “application/json, application/xml”
consumes 如, “application/json, application/xml”
protocols 协议类型,如: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为true ,将在文档中隐藏

2、用于方法上面

(1)@ApiOperation  方法的说明

@ApiOperation:"用在请求的方法上,说明方法的作用"
	value="说明方法的作用"
	notes="方法的备注说明"

(2)@ApiImplicitParams  @ApiImplicitParam 方法参数的说明

@ApiImplicitParams:用在请求的方法上,包含一组参数说明
	@ApiImplicitParam:对单个参数的说明	    
	    name:参数名
	    value:参数的说明、描述
	    required:参数是否必须必填
	    paramType:参数放在哪个地方
	        · query --> 请求参数的获取:@RequestParam
	        · header --> 请求参数的获取:@RequestHeader	      
	        · path(用于restful接口)--> 请求参数的获取:@PathVariable
	        · body(请求体)-->  @RequestBody User user
	        · form(普通表单提交)	   
	    dataType:参数类型,默认String,其它值dataType="Integer"	   
	    defaultValue:参数的默认值
@Api(tags="用户模块")
@Controller
public class UserController {

	@ApiOperation(value="用户登录",notes="随边说点啥")
	@ApiImplicitParams({
		@ApiImplicitParam(name="mobile",value="手机号",required=true,paramType="form"),
		@ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),
		@ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer")
	})
	@PostMapping("/login")
	public JsonResult login(@RequestParam String mobile, @RequestParam String password,
	@RequestParam Integer age){
		//...
	    return JsonResult.ok(map);
	}
}

(3)@ApiResponses  @ApiResponse  方法返回值的说明

@ApiResponses:方法返回对象的说明
	@ApiResponse:每个参数的说明
	    code:数字,例如400
	    message:信息,例如"请求参数没填好"
	    response:抛出异常的类

@Api(tags="用户模块")
@Controller
public class UserController {

	@ApiOperation("获取用户信息")
	@ApiImplicitParams({
		@ApiImplicitParam(paramType="query", name="userId", dataType="String", required=true, value="用户Id")
	}) 
	@ApiResponses({
		@ApiResponse(code = 200, message = "请求成功"),
		@ApiResponse(code = 400, message = "请求参数没填好"),
		@ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")
	}) 
	@ResponseBody
	@RequestMapping("/list")
	public JsonResult list(@RequestParam String userId) {
		...
		return JsonResult.ok().put("page", pageUtil);
	}
}

3、用于对象类

(1)@ApiModel  说明类的用途

(2)@ApiModelProperty  用在JavaBean类的属性上面,说明此属性的含义

@ApiModel(description= "返回响应数据")
public class RestMessage implements Serializable{

	@ApiModelProperty(value = "是否成功",required=true)
	private boolean success=true;	
	
	@ApiModelProperty(value = "错误码")
	private Integer errCode;
	
	@ApiModelProperty(value = "提示信息")
	private String message;
	
    @ApiModelProperty(value = "数据")
	private Object data;
		
	/* getter/setter 略*/
}

 




相关推荐

Swagger作用: (1)接口的文档在线自动生成。 (2)功能测试 注意:swagger只能在非生产模式下使用。 Maven

一、swagger 在没有swagger之前,我们可以使用word、excel或其它在线文档来书写接口定义文档,但这有一个弊端,即在接口发生改变时需要及时同步接口文档。 作为一款非常流行的API文档生