swagger默认访问路径_SpringBoot集成swagger2自定义访问路径

本文档介绍了如何在SpringBoot应用中集成Swagger2并自定义其默认访问路径。通过SwaggerConfig类,配置SimpleUrlHandlerMapping以改变SwaggerUI资源和接口的访问路径,使其从默认的`/swagger-ui.html`变为自定义的`/oss/swagger-ui.html`。
摘要由CSDN通过智能技术生成

packagecom.graph.oss.config;importorg.springframework.beans.factory.InitializingBean;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.env.Environment;importorg.springframework.core.io.ClassPathResource;importorg.springframework.http.ResponseEntity;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.servlet.handler.SimpleUrlHandlerMapping;importorg.springframework.web.servlet.resource.PathResourceResolver;importorg.springframework.web.servlet.resource.ResourceHttpRequestHandler;importorg.springframework.web.util.UrlPathHelper;importspringfox.documentation.annotations.ApiIgnore;importspringfox.documentation.spring.web.DocumentationCache;importspringfox.documentation.spring.web.json.Json;importspringfox.documentation.spring.web.json.JsonSerializer;importspringfox.documentation.swagger.web.ApiResourceController;importspringfox.documentation.swagger.web.SecurityConfiguration;importspringfox.documentation.swagger.web.SwaggerResource;importspringfox.documentation.swagger.web.UiConfiguration;importspringfox.documentation.swagger2.annotations.EnableSwagger2;importspringfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper;importspringfox.documentation.swagger2.web.Swagger2Controller;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

@Configuration

@EnableSwagger2public classSwaggerConfig {private static final String DEFAULT_PATH = "/oss";/*** SwaggerUI资源访问

*

*@paramservletContext

*@paramorder

*@return*@throwsException*/@BeanpublicSimpleUrlHandlerMapping swaggerUrlHandlerMapping(ServletContext servletContext,

@Value("${swagger.mapping.order:10}") int order) throwsException {

SimpleUrlHandlerMapping urlHandlerMapping= newSimpleUrlHandlerMapping();

Map urlMap = new HashMap<>();

{

PathResourceResolver pathResourceResolver= newPathResourceResolver();

pathResourceResolver.setAllowedLocations(new ClassPathResource("META-INF/resources/webjars/"));

pathResourceResolver.setUrlPathHelper(newUrlPathHelper());

ResourceHttpRequestHandler resourceHttpRequestHandler= newResourceHttpRequestHandler();

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= newPathResourceResolver();

pathResourceResolver.setAllowedLocations(new ClassPathResource("META-INF/resources/"));

pathResourceResolver.setUrlPathHelper(newUrlPathHelper());

ResourceHttpRequestHandler resourceHttpRequestHandler= newResourceHttpRequestHandler();

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);returnurlHandlerMapping;

}/*** SwaggerUI接口访问*/@Controller

@ApiIgnore

@RequestMapping(DEFAULT_PATH)public static class SwaggerResourceController implementsInitializingBean {

@AutowiredprivateApiResourceController apiResourceController;

@AutowiredprivateEnvironment environment;

@AutowiredprivateDocumentationCache documentationCache;

@AutowiredprivateServiceModelToSwagger2Mapper mapper;

@AutowiredprivateJsonSerializer jsonSerializer;privateSwagger2Controller swagger2Controller;

@Overridepublic voidafterPropertiesSet() {

swagger2Controller= newSwagger2Controller(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")

@ResponseBodypublic ResponseEntitysecurityConfiguration() {returnapiResourceController.securityConfiguration();

}

@RequestMapping("/swagger-resources/configuration/ui")

@ResponseBodypublic ResponseEntityuiConfiguration() {returnapiResourceController.uiConfiguration();

}

@RequestMapping("/swagger-resources")

@ResponseBodypublic ResponseEntity>swaggerResources() {returnapiResourceController.swaggerResources();

}

@RequestMapping(value= "/v2/api-docs", method = RequestMethod.GET, produces = {"application/json", "application/hal+json"})

@ResponseBodypublic ResponseEntitygetDocumentation(

@RequestParam(value= "group", required = false) String swaggerGroup,

HttpServletRequest servletRequest) {returnswagger2Controller.getDocumentation(swaggerGroup, servletRequest);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值