一.swagger簡介
Swagger是一個規範和完整的框架,用於生成,描述,調用和可視化RESTful風格的Web,總目標是作爲服務器以同樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,允許API來使用保持同步。Swagger讓部署管理和使用功能強大的API簡單起來。
我自己用了這款集成插件,用起來十分的方便每次接口寫完只需要啓動服務,打開swagger路徑就可以很好的查看自己的接口請求方式,入參、出參,不用特意找類似於postman這種接口調用工具,用起來十分的舒心。
二.服務集成
- 依賴包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
- 文件初始化配置
package org.qy.swagger.client;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
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;
/**
* @Description: des
* @Author: 方宇康
* @CreateDate: 2020/4/24 14:34
* @Version: 1.0.0.1
* @Company: 聯通智網科技有限公司
*/
@Configuration
@EnableSwagger2
public class Swagger2
{
/**
* swagger2的配置文件,這裏可以配置swagger2的一些基本的內容,比如掃描的包等等
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("org.qy.swagger.client.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* 構建 api文檔的詳細信息函數,注意這裏的註解引用的是哪個
*/
private ApiInfo apiInfo()
{
return new ApiInfoBuilder()
.title("QY SWAGGER - Swagger2")
.description("QY SWAGGER")
.termsOfServiceUrl("https://gitee.com/fangyukang/spring-cloud")
.version("1.0")
.build();
}
private CorsConfiguration buildConfig()
{
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允許任何域名使用
corsConfiguration.addAllowedOrigin("*");
// 允許任何頭
corsConfiguration.addAllowedHeader("*");
// 允許任何方法(post、get等)
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter()
{
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 對接口配置跨域設置
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}
- 啓動路徑
http://ip:port/swagger-ui.html
2020-04-29 14:43:54.647 INFO 19344 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_QYSWAGGERCLIENT/DESKTOP-CJVEMFP:qyswaggerclient:8082 - registration status: 204
2020-04-29 14:43:54.671 INFO 19344 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
2020-04-29 14:43:54.886 INFO 19344 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8082 (http) with context path ''
2020-04-29 14:43:54.888 INFO 19344 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8082
2020-04-29 14:43:54.890 INFO 19344 --- [ main] o.qy.swagger.client.SwaggerApplication : Started SwaggerApplication in 15.264 seconds (JVM running for 17.537)
2020-04-29 14:43:54.894 INFO 19344 --- [ main] o.qy.swagger.client.SwaggerApplication : 後臺管理服務客戶端啓動成功! Swagger2: http://127.0.0.1:8082/swagger-ui.html
2020-04-29 14:43:57.374 INFO 19344 --- [)-10.141.226.37] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2020-04-29 14:43:57.374 INFO 19344 --- [)-10.141.226.37] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2020-04-29 14:43:57.393 INFO 19344 --- [)-10.141.226.37] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 19 ms
- 接口調用
可以很方便的測試接口,提高開發效率。
項目地址:微服務集成-謙奕爸爸