引入包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
配置
package com.example.swagger.config;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class SwaggerConfig {
@Bean
public Docket docket() {
ApiInfo apiInfo = new ApiInfoBuilder().title("MySwagger")
.description("MySwagger API 接口文档")
.version("1.0.0")
.build();
Docket docket = new Docket(DocumentationType.SWAGGER_2);
docket.apiInfo(apiInfo)//设置SwaggerUi描述信息
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))//@ApiOperation注解的方法才显示
.apis(RequestHandlerSelectors.basePackage("com.example.swagger"))//设置扫描包
.build()
.enable(true);//可作为配置变量,仅测试环境配置true
return docket;
}
}
dto层
package com.example.swagger.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("返回类型")
public class Response {
@ApiModelProperty(value = "主键",name = "id",required = true,example = "1",hidden = true)
private Integer id;
@ApiModelProperty(value = "姓名",name = "name",required = true,example = "fyy",hidden = false)
private String name;
}
controller层
package com.example.swagger.controller;
import com.example.swagger.dto.Request;
import com.example.swagger.dto.Response;
import io.swagger.annotations.*;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@RestController
@RequestMapping("api")
@Api(tags = {"我的SwaggerController"})
public class SwaggerController {
@ApiOperation(value = "test方法",notes = "方法描述")
@GetMapping("/test")
@ApiImplicitParam(name="id", value = "主键", paramType="query",dataType = "Integer", example = "1",required = true)
public Response test(Integer id){
return new Response();
}
@ApiOperation(value = "test方法",notes = "方法描述")
@GetMapping("/test2")
@ApiImplicitParams(value = {
@ApiImplicitParam(name="id", value = "主键", paramType="query",dataType = "Integer", example = "1",required = true),
@ApiImplicitParam(name="name", value = "姓名", paramType="query",dataType = "String", example = "fyy",required = true)
})
public Response test2(Integer id,String name){
return new Response();
}
@ApiOperation(value = "get方法",notes = "方法描述")
@GetMapping("/get")
public Response testGet(@ApiParam(name="id", value = "主键", required = true,example = "1") Integer id){
return new Response();
}
@ApiOperation(value = "post方法",notes = "方法描述")
@PostMapping("/post")
public Response testPost(@RequestBody Request request){
return new Response();
}
@PostMapping("/testNotShow")
public Response testNotShow(@RequestBody Request request){
return new Response();
}
@ApiIgnore//不生成api文档
@PostMapping("/testNotShow2")
public Response testNotShow2(@RequestBody Request request){
return new Response();
}
}
Sawgger页面地址:http://localhost:8080/swagger-ui/index.html#/
可能遇到的问题
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
//Springboot版本太高导致,降低Springboot版本即可