swagger配置正式環(huán)境中不可訪問(wèn)的問(wèn)題
swagger配置正式環(huán)境中不可訪問(wèn)
Swagger是我們常用的API Doc工具,非常便于開(kāi)發(fā)人員調(diào)試,后臺(tái)和前端開(kāi)發(fā)人員協(xié)作,以及對(duì)外公布API使用。
如何在生產(chǎn)環(huán)境中禁止swagger了?
@Profile("beta") // 只允許在測(cè)試服務(wù)器訪問(wèn)Swagger
package com.demo.swagger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; 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; /** * @author HHM */ @Configuration @EnableSwagger2 @Profile("beta") public class SwaggerConfig { @Bean public Docket buildDocket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(buildApiInf()) .select() .apis(RequestHandlerSelectors.basePackage("com.demo.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo buildApiInf() { return new ApiInfoBuilder() .title("管理系統(tǒng)接口文檔") .description("后臺(tái)管理 API 接口文檔") .version(DocumentationType.SWAGGER_2.getVersion()) .build(); } }
以下是正式環(huán)境訪問(wèn)
swagger無(wú)法打開(kāi)的說(shuō)明
最近項(xiàng)目集成swagger2,結(jié)果本地swagger-ui.html可以打開(kāi),但是線上環(huán)境卻無(wú)法打開(kāi)。倒騰了一番終于解決問(wèn)題
總結(jié)了以下幾個(gè)解決方案
1.@EnableWebMvc注解必須去掉!
2.請(qǐng)實(shí)現(xiàn)WebMvcConfigurer,并添加如下代碼
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { ? registry.addResourceHandler("swagger-ui.html") ? ? ? .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html"); ? registry.addResourceHandler("/webjars/**") ? ? ? .addResourceLocations("classpath:/META-INF/resources/webjars/"); }
3.檢查配置文件application.properties
將如下配置去掉,或者改成true:
spring.resources.add-mappings=false
將如下配置去掉:
spring.resources.static-locations: classpath:/webapp/
4.查看nginx配置(當(dāng)前項(xiàng)目踩坑點(diǎn))
檢查前端代碼,發(fā)現(xiàn)nginx配置有如下一段:
location /api/swagger-ui.html{ ? ? ? ? proxy_pass http://server-service:8080/; ? ? ? ? proxy_set_header X-Real-IP $remote_addr; ? ? ? ? client_max_body_size ? ?1000m; }
由于當(dāng)前應(yīng)用部署在k8s環(huán)境中,后端的api地址恰好為http://server-service:8080/,所以這個(gè)配置會(huì)導(dǎo)致請(qǐng)求直接轉(zhuǎn)發(fā)到后端接口,導(dǎo)致無(wú)法訪問(wèn)頁(yè)面。
事實(shí)上,針對(duì)swagger,前端nginx不需要做任何映射,直接請(qǐng)求 http:// {后端公網(wǎng)host}/swagger-ui.html 即可訪問(wèn)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis中如何傳遞單個(gè)String類型的參數(shù)
這篇文章主要介紹了mybatis中如何傳遞單個(gè)String類型的參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06SSH框架網(wǎng)上商城項(xiàng)目第29戰(zhàn)之使用JsChart技術(shù)顯示商品銷售報(bào)表
這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第29戰(zhàn)之使用JsChart技術(shù)顯示商品銷售報(bào)表,感興趣的小伙伴們可以參考一下2016-06-06SpringBoot框架實(shí)現(xiàn)切換啟動(dòng)開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境
這篇文章主要介紹了SpringBoot框架實(shí)現(xiàn)切換啟動(dòng)開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12詳解Java使用Pipeline對(duì)Redis批量讀寫(hmset&hgetall)
本篇文章主要介紹了Java使用Pipeline對(duì)Redis批量讀寫(hmset&hgetall),具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解
這篇文章主要介紹了Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11