访问地址:http://localhost:8081/swagger-ui.html
swagger常用的注解
- @Api()用于类;
表示标识这个类是swagger的资源 - @ApiOperation()用于方法;
表示一个http请求的操作 - @ApiParam()用于方法,参数,字段说明;
表示对参数的添加元数据(说明或是否必填等) - @ApiModel()用于类
表示对类进行说明,用于参数用实体类接收 - @ApiModelProperty()用于方法,字段
表示对model属性的说明或者数据操作更改 - @ApiIgnore()用于类,方法,方法参数
表示这个方法或者类被忽略 - @ApiImplicitParam() 用于方法
表示单独的请求参数 - @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
swagger依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
---
先来一个实体类
```java
package com.zkw.swagger.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("密码")
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
然后来一个controller
package com.zkw.swagger.controller;
import com.zkw.swagger.pojo.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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;
@Api(value = "测试controller",tags = "测试控制类")
@RestController
public class HelloController {
@GetMapping("/hello")
public String getHello(){
return "hello";
}
@PostMapping("/user")
@ApiOperation("用户操作")
public User getUser(){
return new User();
}
@PostMapping("/user1")
@ApiOperation("输入用户名")
public User getUsername(@ApiParam("用户名") String username){
return new User();
}
@PostMapping("/user2")
@ApiOperation("需要User实体类")
public User getUser(@ApiParam("User对象") User user){
return user;
}
}
swagger的配置示例
package com.zkw.swagger.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.VendorExtension;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
@Bean
public Docket getDocket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket getDocket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket getDocket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
//配置swagger的Docket对象
@Bean
public Docket getDocket(Environment environment){
//在特定的开发环境下开启swagger
Profiles profiles = Profiles.of("dev","test");
boolean flag = environment.acceptsProfiles(profiles);
System.err.println(flag);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(getApiInfo())
.groupName("zkw")// 进行分组
.enable(flag) //判断是否开启swagger true开启 false 关闭
.select()
//basePackage("com.zkw.swagger.controller"):通过扫描指定的包,来检测访问url,以及可以可以通过什么方式来进行扫描
//any() 扫描全部的
//none() 不扫锚
//withClassAnnotation(RestController.class) 扫描所有使用RestController这个注解的类
//withMethodAnnotation(GetMapping.class) 扫描所有使用GetMapping这个注解的方法
.apis(
RequestHandlerSelectors.basePackage("com.zkw.swagger.controller")
//RequestHandlerSelectors.withMethodAnnotation(RestController.class)
)
//PathSelectors.ant("/zkw/**") 不扫描zkw目录下边的所有文件
//PathSelectors.none() 所有的都不扫描
//PathSelectors.any() 所有的都被扫扫描
// .paths(PathSelectors.ant("/zkw/**"))
.build();
}
//配置swagger中的信息
public ApiInfo getApiInfo(){
//作者信息
Contact contact = new Contact("小白程序猿一枚", "https://github.com/", "1040419584@qq.com");
return new ApiInfo(
"Swagger学习日志",
"期待与期望",
"v-1.0",
"https://www.baidu.com",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>()
);
}
}
结果如下
配置swagger中的信息
然后就是,controller中的url监控
在这个url的监控中,我们可以进行测试。
实体类的信息