Swagger的基本使用
1.引入jar包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2.相关配置
package com.zk.datastruct.common.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
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
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.genericModelSubstitutes(ResponseEntity.class)
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.apiInfo(apiInfo())
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("springboot利用swagger构建api文档")
.description("简单优雅的restful风格")
.version("1.0")
.build();
}
}
注意:一定要能扫到swagger这个配置类,否则会出错或者访问不到swagger-ui.html
3.码接口
package com.zk.datastruct.controller;
import com.zk.datastruct.common.result.Result;
import com.zk.datastruct.common.result.ResultUtil;
import com.zk.datastruct.entity.User;
import io.swagger.annotations.ApiOperation;
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 java.util.Date;
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping({"/list","/list/{id}"})
@ApiOperation(value = "查询用户") //swagger相关注解,对当前接口的描述
public Result list(String id){
User user0 = new User("0", "小黑", "男", new Date());
User user1 = new User("1", "小红", "女", new Date());
System.out.println("id:" + id);
return ResultUtil.success(id==null ? user0 : user1);
}
@PostMapping("/add")
@ApiOperation("添加用户") //swagger相关注解,对当前接口的描述
public Result add(User user){
System.out.println(user);
return ResultUtil.success();
}
}
swagger的其他注解
- @Api()用于类;
表示标识这个类是swagger的资源 - @ApiOperation()用于方法;
表示一个http请求的操作 - @ApiParam()用于方法,参数,字段说明;
表示对参数的添加元数据(说明或是否必填等) - @ApiModel()用于类
表示对类进行说明,用于参数用实体类接收 - @ApiModelProperty()用于方法,字段
表示对model属性的说明或者数据操作更改 - @ApiIgnore()用于类,方法,方法参数
表示这个方法或者类被忽略 - @ApiImplicitParam() 用于方法
表示单独的请求参数 - @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
4.访问swagger页面
http://localhost:8989/test/swagger-ui.html#/hello-controller
这里根据自己项目配置的项目名和端口号进行访问