代码先锋网 代码片段及技术文章聚合

SpringBoot整合swagger-ui并修改访问路径

用该方法之前要看一下自己swagger的版本,我一开始用的时候,就是因为版本的问题而出错

这是我的maven引用

<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>

 


import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import org.springframework.web.servlet.resource.PathResourceResolver;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import org.springframework.web.util.UrlPathHelper;
import springfox.documentation.annotations.ApiIgnore;
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.DocumentationCache;
import springfox.documentation.spring.web.json.Json;
import springfox.documentation.spring.web.json.JsonSerializer;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.ApiResourceController;
import springfox.documentation.swagger.web.SecurityConfiguration;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper;
import springfox.documentation.swagger2.web.Swagger2Controller;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * http://127.0.0.1:8080/swagger
 */
@EnableSwagger2
@Configuration
public class SwaggerConfig {
 
    private static final String DEFAULT_PATH = "/swagger";
 
    /**
     * SwaggerUI资源访问
     *
     * @param servletContext
     * @param order
     * @return
     * @throws Exception
     */
    @Bean
    public SimpleUrlHandlerMapping swaggerUrlHandlerMapping(ServletContext servletContext,
                                                            @Value("${swagger.mapping.order:10}") int order) throws Exception {
        SimpleUrlHandlerMapping urlHandlerMapping = new SimpleUrlHandlerMapping();
        Map<String, ResourceHttpRequestHandler> urlMap = new HashMap<>();
        {
            PathResourceResolver pathResourceResolver = new PathResourceResolver();
            pathResourceResolver.setAllowedLocations(new ClassPathResource("META-INF/resources/webjars/"));
            pathResourceResolver.setUrlPathHelper(new UrlPathHelper());
 
            ResourceHttpRequestHandler resourceHttpRequestHandler = new ResourceHttpRequestHandler();
            resourceHttpRequestHandler.setLocations(Arrays.asList(new ClassPathResource("META-INF/resources/webjars/")));
            resourceHttpRequestHandler.setResourceResolvers(Arrays.asList(pathResourceResolver));
            resourceHttpRequestHandler.setServletContext(servletContext);
            resourceHttpRequestHandler.afterPropertiesSet();
            //设置新的路径
            urlMap.put(DEFAULT_PATH + "/webjars/**", resourceHttpRequestHandler);
        }
        {
            PathResourceResolver pathResourceResolver = new PathResourceResolver();
            pathResourceResolver.setAllowedLocations(new ClassPathResource("META-INF/resources/"));
            pathResourceResolver.setUrlPathHelper(new UrlPathHelper());
 
            ResourceHttpRequestHandler resourceHttpRequestHandler = new ResourceHttpRequestHandler();
            resourceHttpRequestHandler.setLocations(Arrays.asList(new ClassPathResource("META-INF/resources/")));
            resourceHttpRequestHandler.setResourceResolvers(Arrays.asList(pathResourceResolver));
            resourceHttpRequestHandler.setServletContext(servletContext);
            resourceHttpRequestHandler.afterPropertiesSet();
            //设置新的路径
            urlMap.put(DEFAULT_PATH + "/**", resourceHttpRequestHandler);
        }
        urlHandlerMapping.setUrlMap(urlMap);
        //调整DispatcherServlet关于SimpleUrlHandlerMapping的排序
        urlHandlerMapping.setOrder(order);
        return urlHandlerMapping;
    }
 
    /**
     * SwaggerUI接口访问
     */
    @Controller
    @ApiIgnore
    @RequestMapping(DEFAULT_PATH)
    public static class SwaggerResourceController implements InitializingBean {
 
        @Autowired
        private ApiResourceController apiResourceController;
 
        @Autowired
        private Environment environment;
 
        @Autowired
        private DocumentationCache documentationCache;
 
        @Autowired
        private ServiceModelToSwagger2Mapper mapper;
 
        @Autowired
        private JsonSerializer jsonSerializer;
 
        private Swagger2Controller swagger2Controller;
 
        @Override
        public void afterPropertiesSet() {
            swagger2Controller = new Swagger2Controller(environment, documentationCache, mapper, jsonSerializer);
        }
 
        /**
         * 首页
         *
         * @return
         */
        @RequestMapping
        public ModelAndView index() {
            ModelAndView modelAndView = new ModelAndView("redirect:" + DEFAULT_PATH + "/swagger-ui.html");
            return modelAndView;
        }
 
        @RequestMapping("/swagger-resources/configuration/security")
        @ResponseBody
        public ResponseEntity<SecurityConfiguration> securityConfiguration() {
            return apiResourceController.securityConfiguration();
        }
 
        @RequestMapping("/swagger-resources/configuration/ui")
        @ResponseBody
        public ResponseEntity<UiConfiguration> uiConfiguration() {
            return apiResourceController.uiConfiguration();
        }
 
        @RequestMapping("/swagger-resources")
        @ResponseBody
        public ResponseEntity<List<SwaggerResource>> swaggerResources() {
            return apiResourceController.swaggerResources();
        }
 
        @RequestMapping(value = "/v2/api-docs", method = RequestMethod.GET, produces = {"application/json", "application/hal+json"})
        @ResponseBody
        public ResponseEntity<Json> getDocumentation(
                @RequestParam(value = "group", required = false) String swaggerGroup,
                HttpServletRequest servletRequest) {
            return swagger2Controller.getDocumentation(swaggerGroup, servletRequest);
        }
    }
}

方法转自: https://blog.csdn.net/qq276726581/article/details/81135520

 

如果想加上标题之类的,下面的这些也可以放进上面的类中

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //controller的目录
                .apis(RequestHandlerSelectors.basePackage("com.swagger.api"))
                .paths(PathSelectors.any())
                .build();
    }
	//用来创建该Api的基本信息(这些基本信息会展现在文档页面中)
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("swagger")
                .description("http://www.baidu.com/")
                .termsOfServiceUrl("http://www.baidu.com/")
                .version("1.0")
                .build();
    }

 

 

 

 

版权声明:本文为weixin_42260311原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42260311/article/details/88661546

智能推荐

SpringBoot笔记系列:(二十一)修改端口号及项目访问路径

springboot中修改端口号及项目访问路径: 在application.properties配置文件中添加配置信息 SpringBoot笔记系列目录...

Springboot2-修改应用启动端口和访问路径

一、application.properties配置文件   二、application.yml配置文件 浏览器访问方式:http://localhost:8081/demo1/action-name...

SpringBoot2实现拦截器并读取yml配置的访问路径

①新建application.yml文件,添加如下代码 ②新建配置类存储yml文件中的配置,可自行设置前缀名,与配置文件中前缀名一致即可 此步骤完成了,当项目启动时,配置文件中的路径就会注入到PathConfig的属性中 注意事项: 1、属性名需要和配置文件中的一致 2、"-"后需要跟一个空格,否则会导致读取的路径名带"-" ③新建主配置类实现WebMvcC...

猜你喜欢

访问路径问题

所有访问路径,都是会发送请求的!   Q:为什么一个静态文件html 里面的路径有点能正常访问;有时会报net::ERR_FAILED? A: 跟浏览器的同源策略跟跨域处理有关(同源策略限制了) 浏览器允许跨源访问的方式包括: CORS:跨域资源共享(通过设置HTTP头信息来获取跨源服务器上的特定资源,主要是设置Access-Control-Allow-Origin字段的值) -----...

访问路径

为什么80%的码农都做不了架构师?>>>    在XXX.jsp页面,标签a的href属性: 例子, 说明:jsp页面里的访问路径,没有以斜杠/开头,表示当前目录下的访问路径(这里说的访问路径,指访问资源) 2. web.xml 说明:jsp页面里面的url,实际上就是servlet类,所以访问路径也是以斜杠/开头的——这个很好理解,因...

Mac 如何修改 apache的默认访问路径/目录

Mac 电脑默认Apache的访问目录为:/Library/Webserver/Documents/ 修改步骤如下: 1、打卡apache的配置文件:/etc/apache2 下面的 httpd.conf: 找到如下配置:   2、将 /Library/WebServer/Documents, 现改为你想要访问的目录 ,eg: /Users/username/phpSites, 如下: ...

Tomcat path属性 修改项目访问路径

2019独角兽企业重金招聘Python工程师标准>>> 项目路径去除项目名 修改server.xml,如下: 解读: path属性表明访问helloapp应用的URL入口为“/”。   转载于:https://my.oschina.net/NamiZone/blog/1506043...

axis2 修改webservice访问路径

2019独角兽企业重金招聘Python工程师标准>>> 部署好axis2的webservice后,默认的访问路径是http://localhost:8081/axis2/services/HeartbeatService/beat?xml= 如何改变红色部分的配置呢? 1、在WEB-INF下面找到web.xml, 修改,url-pattern的值 2、在WEB-INF/conf下...