真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringMVC怎么在生產(chǎn)環(huán)境禁用Swagger-創(chuàng)新互聯(lián)

小編給大家分享一下SpringMVC怎么在生產(chǎn)環(huán)境禁用Swagger,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、雅安服務(wù)器托管、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、侯馬網(wǎng)站維護(hù)、網(wǎng)站推廣。

Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。總體目標(biāo)是使客戶(hù)端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步。

Swagger 讓部署管理和使用功能強(qiáng)大的API從未如此簡(jiǎn)單。好吧,以上是官方的說(shuō)法,我直接復(fù)制的,在我看來(lái)swagger就是一個(gè)接口文檔管理器,以前我們寫(xiě)接口一般都是world編寫(xiě),但是有一個(gè)問(wèn)題就是測(cè)試的時(shí)候需要依賴(lài)第三方工具,GET的接口還好,直接瀏覽器打開(kāi),POST的只能依賴(lài)另外的工具了,而Swagger呢,可以直接通過(guò)代碼中的注解生成接口文檔(JavaEE),一般人都用這種方式,而且直接集成在項(xiàng)目中,方便成員查看,同時(shí)還能直接測(cè)試,另外Swagger的界面也不錯(cuò),也許這就是我選擇用Swagger的原因吧,直接官方說(shuō)的RESTful 風(fēng)格那個(gè)不用管,不是RESTful 風(fēng)格的接口也能用,當(dāng)然Swagger還有一種方式就是手動(dòng)寫(xiě)接口說(shuō)明了,這樣的好處就是代碼只有代碼,因?yàn)橐坏┐a中添加了Swagger的接口注解后,代碼量還是增加了不少,當(dāng)然壞處就是你改完了代碼,還要去改接口文檔

SpringMVC集成springfox-swagger2和springfox-swagger-ui很簡(jiǎn)單,只需要兩步:

(1)pom中添加依賴(lài)

 
   io.springfox 
   springfox-swagger-ui 
   ${springfox-swagger.version} 
   
   
   io.springfox 
   springfox-swagger2 
   ${springfox-swagger.version} 
  

(2)添加Swagger的配置類(lèi):

@Configuration 
@EnableSwagger2 
@EnableWebMvc 
@ComponentScan("com.XXX.controller") 
public class SwaggerConfig{ 
}

然后就可以通過(guò)http://localhost/swagger-ui.html看到項(xiàng)目中所有的接口信息了,通過(guò)http://localhost/v2/api-docs就能看到j(luò)son數(shù)據(jù)。

但是,如何在生產(chǎn)環(huán)境禁用這些api文檔呢?試了很多種方式,最終找到一個(gè)簡(jiǎn)單實(shí)用的辦法:

@Configuration 
@EnableSwagger2 
@EnableWebMvc 
@ComponentScan("com.XXX.controller") 
public class SwaggerConfig{  
 @Autowired 
 ConfigService configService; 
  
 @Bean 
 public Docket customDocket() { 
  if(configService.getServerEnv() == ServerEnvEnum.ONLINE) { 
   return new Docket(DocumentationType.SWAGGER_2) 
   .apiInfo(apiInfoOnline()) 
  .select() 
    .paths(PathSelectors.none())//如果是線(xiàn)上環(huán)境,添加路徑過(guò)濾,設(shè)置為全部都不符合 
  .build(); 
  }else { 
   return new Docket(DocumentationType.SWAGGER_2) 
   .apiInfo(apiInfo()); 
  } 
 } 
 
 private ApiInfo apiInfo() { 
  return new ApiInfoBuilder() 
    .title("XXX系統(tǒng)") 
    .description("XXX系統(tǒng)接口") 
    .license("") 
    .licenseUrl("") 
    .termsOfServiceUrl("") 
    .version("1.0.0") 
    .contact(new Contact("","", "")) 
    .build(); 
 } 
 private ApiInfo apiInfoOnline() { 
  return new ApiInfoBuilder() 
    .title("") 
    .description("") 
    .license("") 
    .licenseUrl("") 
    .termsOfServiceUrl("") 
    .version("") 
    .contact(new Contact("","", "")) 
    .build(); 
 } 
}

現(xiàn)在http://localhost/swagger-ui.html這個(gè)頁(yè)面雖然還能訪(fǎng)問(wèn),那是卻看不到任何內(nèi)容了,包括http://localhost/v2/api-docs也是一樣。

應(yīng)該還有更好的辦法!

參考:https://www.jb51.net/article/135312.htm

swagger必須要跟springmvc在同一個(gè)context才行,springmvc只是spring的一個(gè)子context。如果swagger讓spring的context加載,那么swagger的那些url用springmvc的攔截器是攔截不到的!

所以,兩種解決辦法:

如果是使用注解的方式:

(1)spring-mvc的配置:

 
 
  
  

注意要把swagger的配置加進(jìn)來(lái),同時(shí):

(2)spring的配置:

 
 
  
  

注意把swagger排除掉

(3)Swagger的配置:

@Configuration 
@EnableSwagger2 
@EnableWebMvc 
@ComponentScan("com.inspur.eyun.yunbx.controller") 
public class SwaggerConfig{ 
}

注意@Configuration注解。

當(dāng)然更推薦的辦法是使用xml配置的方式,因?yàn)檫@樣可以不用引入swagger的依賴(lài)包:

(1)spring-mvc的配置:

 
  
   
  

spring-mvc-swagger.xml:

 
 
 SpringMVC Swagger Configuration 
  
  

注意:我們這里把swagger單獨(dú)放到一個(gè)配置文件中,如果是線(xiàn)上環(huán)境,則文件內(nèi)容為空,如果是線(xiàn)下測(cè)試環(huán)境,則配置上Swagger。

(2)spring的配置:

 
  
   
 

(3)Swagger的配置:

@EnableSwagger2 
@EnableWebMvc 
public class SwaggerConfig{ 
 
 @Bean 
 public Docket customDocket() { 
  return new Docket(DocumentationType.SWAGGER_2) 
    .apiInfo(apiInfo()) 
    .select() 
    .apis(RequestHandlerSelectors.basePackage("com.inspur.eyun.yunbx.controller")) 
    .paths(PathSelectors.any()) 
    .build(); 
 } 
 
 private ApiInfo apiInfo() { 
  return new ApiInfoBuilder() 
    .title("XXX平臺(tái)") 
    .description("XXX平臺(tái)接口") 
    .license("") 
    .licenseUrl("") 
    .termsOfServiceUrl("") 
    .version("1.0.0") 
    .contact(new Contact("","", "")) 
    .build(); 
 } 
}

注意:這里我們?nèi)サ袅薂Configuration,同時(shí),修改我們的pom,配置多profile打包:

pom.xml:

 
   
   io.springfox 
   springfox-swagger2 
   ${springfox-swagger.version} 
   ${swagger.scope} 
   
   
   io.springfox 
   springfox-swagger-ui 
   ${swagger.scope} 
   ${springfox-swagger-ui.version} 
  

注意:這里的依賴(lài)的scope是動(dòng)態(tài)設(shè)置的,如果是線(xiàn)上環(huán)境,我們把scope設(shè)置成provided就可以。

 
   
   dev 
    
    dev 
    compile 
    
    
    true 
    
   
   
   test 
    
    test 
    compile 
    
   
   
   online 
    
    online 
    provided 
    
   
 

通過(guò)不同的profile給swagger的依賴(lài)設(shè)置不同的scope!

注意:springfox-swagger.version=2.7.0有bug,可以使用低版本2.6.1。太他媽的坑!

看完了這篇文章,相信你對(duì)“SpringMVC怎么在生產(chǎn)環(huán)境禁用Swagger”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享文章:SpringMVC怎么在生產(chǎn)環(huán)境禁用Swagger-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/csgods.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部