swagger直接上手之基础版

1.去官网下载swagger-ui

 https://github.com/swagger-api/swagger-ui

下载完成后,解压文件。在你项目的WEB-INF目录下,创建一个文件夹,命名为swagger(当然,你也可以用其他的名字命名),然后去刚才解压的文件中找到dist,

 将dist文件夹里面的所有文件拷贝到swagger目录下;

2.pom.xml中引入springfox-swagger相关包(注意需要查阅swagger版本与spring版本的兼容性)

查看兼容性:http://mvnrepository.com/

<!-- swagger -->
<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.1.2</version>
</dependency>
        
<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
 <version>2.1.2</version>
</dependency>

3.编写swagger主配置类

该类的作用是将swagger注入到spring容器中,可放在任意包下,代码如下

package com.web.manager.web.config;

import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

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;


@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig {

   Boolean swaggerEnabled = true;
    
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(swaggerEnabled)
                .select() // 选择那些路径和api会生成document
                .apis(RequestHandlerSelectors.basePackage("com.ansun.web.manager.controller.business"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("投票系统 RESTful APIs")
                .version("1.0")
                .build();
    }
    
}

注意:.apis()用于设置扫描的Controller类的包,swagger会将给定路径下的所有Controller类都作为自己的有效资源,如果想让

某个类不被扫描到,需要在类上面加上@ApiIgnore注解。

4.applicationContext.xml中增加主配置类的配置以及静态资源映射

<!-- Swagger配置 -->
<bean class="com.ansun.web.manager.web.config.SwaggerConfig"></bean>

<!-- 静态资源映射 -->
<mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/>
<!-- 静态资源文件,不会被Spring MVC拦截 -->
<mvc:resources mapping="/swagger/**" location="/swagger/" />

5.修改swagger UI中的index.html

找到WEB-INF/swagger目录下的index.html,打开并找到如下代码

<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Swagger UI</title>
    <link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
    <link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
    <link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
    <style>
      html
      {
        box-sizing: border-box;
        overflow: -moz-scrollbars-vertical;
        overflow-y: scroll;
      }

      *,
      *:before,
      *:after
      {
        box-sizing: inherit;
      }

      body
      {
        margin:0;
        background: #fafafa;
      }
    </style>
  </head>

  <body>
    <div id="swagger-ui"></div>

    <script src="./swagger-ui-bundle.js"> </script>
    <script src="./swagger-ui-standalone-preset.js"> </script>
    <script>
    window.onload = function() {
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle({
        url: "http://192.168.1.6:8080/你的工程名称/v2/api-docs",
        dom_id: '#swagger-ui',
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      })
      // End Swagger UI call region

      window.ui = ui
    }
  </script>
  </body>
</html>

其中,需要将 http://petstore.swagger.io/v2/swagger.json  更改为  主机+端口+你的项目名称+"/v2/api-docs

    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/rest-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/service/*</url-pattern>
    </servlet-mapping>

注意:v2/api-docs为后台接口路径,如果web.xml中配置的springmvc请求拦截不是/*,请注意加上,完整的路径为:主机+端口+你的项目名称+"/(拦截标识service)/v2/api-docs,

6.使用swagger注解

7.接口管理页面的访问

启动你的项目,输入 http://127.0.0.1:8080/项目名称/swagger/index.html,即可看到结果。

原文地址:https://www.cnblogs.com/yunduo/p/10614737.html