springboot整合knife4j(绝对可⽤)1.9.6版~2.0.8版
1.情景展⽰
  开发接⼝供别⼈调⽤或者前后端分离后,前端调后端请求需要提供什么参数,会返回什么样的结果。如果⼀对⼀沟通的话,费时费⼒,写接⼝⽂档的话也⽐较⿇烦。
2.效果展⽰
  现在使⽤knife4j就可以实现以下效果:
  点击调试按钮,就可以直接配置请求参数,发送请求啦
3 1.9.6版本配置
  1.引⼊jar包
  只需要引⼊这⼀个jar包就可以了,⽆需其它jar包。   
  2.创建⼀个配置类,⽐如:Knife4jConfig
  3.导包
  4.添加注解
  以上是三个注解,⼀个都不能少,在这⾥需要注意的⼀点就是:
  启⽤knif4j使⽤的注解是:@EnableSwaggerBootstrapUi,⽽不是@EnableKnife4j
  5.创建Docket对象,并注⼊到spring容器当中
  6.设置主页⽂档内容
  在配置⽂件类Knife4jConfig中添加以上两个⽅法即可。
springmvc常用标签4 2.0.4版本配置
  1.导包
<!--配置knife4j项⽬接⼝⽂档-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
  说明:2.0.2版本的,只需要把上⾯jar包的版本号改成2.0.2即可,下⾯的配置⼀模⼀样。
  只需要引⼊这⼀个jar包就可以了,⽆需其它jar包。   
  2.创建⼀个配置类,⽐如:Knife4jConfig(配置⽂件类最好创建⼀个config/conf包,⽅便统⼀管理)
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation;
import t.annotation.Bean;
import t.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 项⽬接⼝⽂档配置(swagger)
* @description: 使⽤knife4j需要⼀个swagger的配置类
* @author: Marydon
* @date: 2020年08⽉11⽇ 0011 9:22
*/
@Configuration
// 必须启⽤swagger
@EnableSwagger2
@EnableKnife4j
/
/ swagger⽂档配置只在指定环境可访问(该注解的值对应的是l⽂件中的spring.profiles.active的值) // ⽀持使⽤!,⽐如:!prod表⽰⾮⽣产环境
// @Profile({"dev","test","jc"})
public class Knife4jConfig {
/*
* 创建连接的包信息
* @param: ⽅法名称随便起,虽然它的名字会被作为Bean对象的名字注⼊spring容器
* @date: 2020年08⽉11⽇ 0011 9:51
* @param:
* @return: springfox.documentation.spring.web.plugins.Docket 返回创建状况
*/
@Bean
public Docket defaultApi2() {
return  new Docket(DocumentationType.SWAGGER_2) // 选择swagger2版本
.useDefaultResponseMessages(false)
// 接⼝⽂档的基本信息
.apiInfo(apiInfo())
.select()
// 这⾥指定Controller扫描包路径(项⽬路径也⾏)
// ⽅式⼀:配置扫描:所有想要在swagger界⾯统⼀管理的接⼝,都必须在此包下
// .apis(RequestHandlerSelectors.basePackage("company.ance"))
// ⽅式⼆:只有当⽅法上有@ApiOperation注解时,才能⽣成对应的接⼝⽂档
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
/
/ 路径使⽤any风格(指定所有路径)
.paths(PathSelectors.any())
.build();
}
/*
* 设置⽂档信息主页的内容说明
* @date: 2020年08⽉11⽇ 0011 9:52
* @param:
* @return: springfox.documentation.service.ApiInfo ⽂档信息
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("接⼝项⽬后台服务API接⼝⽂档")
.description("服务相关接⼝(knife4j)")
// 服务Url(⽹站地址)
.termsOfServiceUrl("localhost:8080/")
.contact(new Contact("Marydon",null,"marydon20170307@163"))
.version("1.0")
.build();
}
}
5.注解基本⽤法
  @Api():⽤于类的说明,准确的来说⽤于controller,表⽰这个类是⼀个swagger资源
  对应的是:⼀个Controller
  注意:tags属性必须显式声明,否者⽆法修改⼩组的显⽰名称
  举例:
  实际效果:
  未⽣效(因为没有声明:tags=)
  @ApiOperation():⽤于⽅法的说明,表⽰这是⼀个HTTP请求
  对应的是controller⾥的⽅法
  2020-12-16
  这⾥需要注意的是:
  @PostMapping对应的post请求,反映到API上就是post请求;
  @GetMapping对应的get请求,反映到API上就是get请求;
  @RequestMapping如果没有指定具体请求⽅式
  API⽂档如下:
  它会给你⽣出7种不同的请求⽅式,API本⾝没错
  实际上,我们使⽤@RequestMapping的真实⽬的,也许是:想让该接⼝既⽀持get请求,也⽀持post请求,那我们可以做出限定。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。