文章目录
- 添加依赖
- config工作包中新增SwaggerConfig
- 报错
- 注解
环境:
jdk1.8
java8
springboot2.6.13
swagger2.9.2
添加依赖
pom.xml
<!-- 添加swagger2--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency>
<!-- 添加swagger-ui--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency>
config工作包中新增SwaggerConfig
SwaggerConfig
package com.example.demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2 //启用swagger2功能
public class SwaggerConfig {/*** 配置swagger2相关的bean*/@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com")).paths(PathSelectors.any()).build();}/*** 此处主要是API文档页面显示信息*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title("SpringBoot整合Swagger2").description("SpringBoot整合Swagger2").termsOfServiceUrl("").version("1.0").build();}
}
报错
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
解决:
//application.properties
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
注解
作用范围 | API | API常用参数 | 作用位置 |
---|---|---|---|
协议集描述 | @Api | @Api(tags = {“tag1”,“tag2”,“…”}) | controller类 |
协议描述 | @ApiOperation | @ApiOperation(value = “功能描述”,notes = “备注”) | controller类的方法 |
描述返回对象的意义 | @ApiModel | @ApiModel(value=“类名”,description=“类描述”) | 返回对象类 |
对象属性 | @ApiModelProperty | @ApiModelProperty(value = “类属性描述”,required = true,example = “属性举例”,notes = “备注”) | 出入参数对象的字段 |
非对象参数集 | @ApiImplicitParams | @ApiImplicitParams({@ApiImplicitParam(),@ApiImplicitParam(),…}) | controller的方法 |
非对象参数描述 | @ApiImplicitParam | @ApiImplicitParam(name = “参数名”,value = “参数描述”,required = true,paramType = “接口传参类型”,dataType = “参数数据类型”) | @ApiImplicitParams的方法里用 |
Response集 | @ApiResponses | @ApiResponses({ @ApiResponse(),@ApiResponse(),…}) | controller的方法 |
Response | @ApiResponse | @ApiResponse(code = 10001, message = “返回信息”) | @ApiResponses里用 |
忽略注解 | @ApiIgnore | @ApiIgnore | 类,方法,方法参数 |
package com.example.water.controller;import com.example.water.entity.User;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;import java.util.List;@Api(tags = "控制器说明:用户控制器")
@RestController
public class UserController {@ApiOperation("接口说明:查询用户接口")@RequestMapping(value = "/getUser", method = RequestMethod.GET)public String getUser(@ApiParam(name = "姓名") String name) {return name;}@ApiOperation("接口说明:用户接口")@ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", dataType = "String", defaultValue = "dai"),})@RequestMapping(value = "/setUser", method = RequestMethod.GET)@ResponseBodypublic User user(@RequestParam(name = "name") String name) {User user = new User();user.setName(name);return user;}
}
package com.example.water.entity;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;@ApiModel("实体类说明:用户实体类")
public class User {@ApiModelProperty("姓名")private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
swagger
http://localhost:8080/swagger-ui.html
Knife4j
http://127.0.0.1:8080/doc.htm
配置与swagger一样,只需要再加个依赖
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.4.0</version>
</dependency>