工程目录结构:

首先,引入jar包,只需要以下两个即可
1<dependency> 2 <groupId>io.springfox</groupId> 3 <artifactId>springfox-swagger2</artifactId> 4 <version>2.4.0</version> 5</dependency> 6 7<dependency> 8 <groupId>io.springfox</groupId> 9 <artifactId>springfox-swagger-ui</artifactId> 10 <version>2.4.0</version> 11</dependency>
1、Swagger配置类
1package com.mark.swagger; 2 3import org.springframework.context.annotation.Bean; 4import org.springframework.context.annotation.Configuration; 5import springfox.documentation.builders.ApiInfoBuilder; 6import springfox.documentation.builders.PathSelectors; 7import springfox.documentation.builders.RequestHandlerSelectors; 8import springfox.documentation.service.ApiInfo; 9import springfox.documentation.service.Contact; 10import springfox.documentation.spi.DocumentationType; 11import springfox.documentation.spring.web.plugins.Docket; 12import springfox.documentation.swagger2.annotations.EnableSwagger2; 13 14@Configuration 15@EnableSwagger2 16public class Swagger2 { 17//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 18 @Bean 19 public Docket createRestApi() { 20 return new Docket(DocumentationType.SWAGGER_2) 21 .apiInfo(apiInfo()) 22 .select() 23 //为当前包路径 24 .apis(RequestHandlerSelectors.basePackage("com.mark")) 25 .paths(PathSelectors.any()) 26 .build(); 27 } 28 //构建 api文档的详细信息函数,注意这里的注解引用的是哪个 29 private ApiInfo apiInfo() { 30 return new ApiInfoBuilder() 31 //页面标题 32 .title("Spring Boot 测试使用 Swagger2 构建RESTful API") 33 //创建人 34 .contact(new Contact("WangXiaodong", "http://www.baidu.com", "")) 35 //版本号 36 .version("1.0") 37 //描述 38 .description("API 描述") 39 .build(); 40 } 41 42 43}
注意修改:basePackage("接口所在controller的包路径")
2、实体类
接口接收入参为json串,需由实体类转化为对应key-value
1package com.mark.swagger; 2 3public class User { 4 5 private String name; 6 7 public String getName() { 8 return name; 9 } 10 11 public void setName(String name) { 12 this.name = name; 13 } 14 15 @Override 16 public String toString() { 17 return "User [name=" + name + "]"; 18 } 19 20}
3、接口所在Controller
1package com.mark.swagger; 2 3import org.springframework.web.bind.annotation.RequestBody; 4import org.springframework.web.bind.annotation.RequestMapping; 5import org.springframework.web.bind.annotation.RequestMethod; 6import org.springframework.web.bind.annotation.ResponseBody; 7import org.springframework.web.bind.annotation.RestController; 8import io.swagger.annotations.Api; 9import io.swagger.annotations.ApiImplicitParam; 10import io.swagger.annotations.ApiImplicitParams; 11import io.swagger.annotations.ApiOperation; 12 13@RestController 14@RequestMapping("/hello") 15@Api(value = "/hello") 16public class SwagController { 17 18 19 @ApiOperation(value = "查询用户", notes = "查询用户") 20 @ApiImplicitParams({@ApiImplicitParam(name = "name", value = "姓名", required = true, dataType = "String"), 21 }) 22 @RequestMapping(value = "/getName",method=RequestMethod.POST) 23 @ResponseBody 24 public User getName(@RequestBody User name) { 25 System.out.println(name.toString()); 26 return name; 27 } 28 29 30}
通过@RequestBody注解,将接收到的json参数,转化为实体类User对应的值
4、SpringBoot启动类
虽然大家都知道,还是来一个吧
1package com.mark; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5import springfox.documentation.swagger2.annotations.EnableSwagger2; 6@SpringBootApplication 7public class Application { 8 9 public static void main(String[] args) { 10 SpringApplication.run(Application.class, args); 11 } 12 13}
测试
输入地址:localhost:8080/swagger-ui.html
如下所示:出现刚才写的接口

点击SHow/Hide
1、/hello/getName:路径
2、Model:入参json对应的model,就是上面的User
3、填写要传入的参数(json格式)

传入参数:
1{ 2 "name": "WangXiaodong" 3}
测试结果:
