1, 使用 IntelliJ 创建springboot 项目

image.png
image.png

2, 写一个Hello controller测试项目能够启动

image.png

  1. @RestController
  2. public class HelloController {
  3. @GetMapping("/hello")
  4. public String Hello(){
  5. return "Hello";
  6. }
  7. }

3, 写一个Swagger配置类, 测试swagger ui 页面

添加maven 依赖:

  1. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.9.2</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
  8. <dependency>
  9. <groupId>io.springfox</groupId>
  10. <artifactId>springfox-swagger-ui</artifactId>
  11. <version>2.9.2</version>
  12. </dependency>

swagger版本 2.9.2,如果使用3.0以上版本Maven引入的jar包可能有所不同。

image.png
此时, swagger配置类中暂时不添加任何代码。在Springboot Application主类中需要添加@EnableSwagger2.
image.png
运行springboot, 输入url: http://localhost:8080/swagger-ui.html#/
image.png

4, 订制Swagger内容

  1. ApiInfo: 介绍文本, 不怎么重要, 可以作为联合开发时的介绍信息。

    1. @Configurable
    2. public class SwaggerConfig {
    3. @Bean
    4. public Docket apiDocket() {
    5. Contact contact = new Contact(
    6. "Sergey Kargopolov",
    7. "https://www.appsdeveloperblog.com",
    8. "developer@appsdeveloperblog.com"
    9. );
    10. List<VendorExtension> vendorExtensions = new ArrayList<>();
    11. ApiInfo apiInfo = new ApiInfo(
    12. "Photo app RESTful Web Service documentation",
    13. "This pages documents Photo app RESTful Web Service endpoints", "1.0",
    14. "http://www.appsdeveloperblof.com/service.html", contact,
    15. "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0",vendorExtensions);
    16. Docket docket = new Docket(DocumentationType.SWAGGER_2)
    17. .apiInfo(apiInfo);
    18. return docket;
    19. }
    20. }

    image.png
    遗憾的是, 本文作者为修改成功,希望读者有成功的案例可以分享。

  2. 配置扫描包和过滤api url路径:

扫描包地址:
image.png

  1. .apis(RequestHandlerSelectors.basePackage("com.sky.swagger.controller"))

本项目controller包目录为com.sky.swagger.controller, 即该路径下所有的controller类都会被扫描。

api url 路径过滤:

  1. .paths(PathSelectors.any())

any() // 任何请求都扫描
none() // 任何请求都不扫描
regex(final String pathRegex) // 通过正则表达式控制
ant(final String antPattern) // 通过ant()控制