微服务架构下使用Spring Cloud Zuul作为网关将多个微服务整合到一个Swagger服务上详解架构师

注意:

  如果你正在研究微服务,那必然少不了服务之间的相互调用,哪么服务之间的接口以及api就必须生成系统的管理文档了。如果你希望更好的管理你的API,你希望有一个工具能一站式地解决API相关的所有事情,那么,swagger将是一个不错的选择,以下就为大家介绍swagger是使用方法,如有不对之处,还望指正!

1、项目结构

  springBoot-user-zuul-swagger   — zuul网关 端口   9501

   ls-prevention-check       —   服务1         端口   8091 

  microcloud-provider-company     —   服务2         端口 8105

2、实现放法

  一、添加依赖

  分别在三个服务中添加Swagger需要依赖两个jar包,在pom.xml中添加如下坐标

 

 1     <dependency> 
 2             <groupId>io.springfox</groupId> 
 3             <artifactId>springfox-swagger2</artifactId> 
 4             <version>2.7.0</version> 
 5     </dependency> 
 6     <dependency> 
 7             <groupId>io.springfox</groupId> 
 8             <artifactId>springfox-swagger-ui</artifactId> 
 9             <version>2.7.0</version> 
10     </dependency>

 

 

  二、创建配置类

    分别在服务提供者项目中加入Swagger一个配置类来进行对swagger的基本配置,

 

 1 @Configuration 
 2 @EnableSwagger2 
 3 public class SwaggerConfig { 
 4  
 5     @Bean 
 6     public Docket createRestApi() { 
 7         return new Docket(DocumentationType.SWAGGER_2) 
 8                 .apiInfo(apiInfo()) 
 9                 .select() 
10                 .apis(RequestHandlerSelectors.basePackage("com.zyc.controller")) 
11                 .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) 
12                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) 
13                 .paths(PathSelectors.any()) 
14                 .build(); 
15     } 
16  
17     private ApiInfo apiInfo() { 
18         return new ApiInfoBuilder() 
19                 .title("Hello系统api") 
20                 .description("Hello系统接口文档说明") 
21                 .contact(new Contact("vker", "", "[email protected]")) 
22                 .version("1.0") 
23                 .build(); 
24     } 
25  
26     @Bean 
27     UiConfiguration uiConfig() { 
28         return new UiConfiguration(null, "list", "alpha", "schema", 
29                 UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, true, 60000L); 
30     } 
31 }

 

 

   三、启动类加注解

[email protected]

  四、在需要生成的类或方法上加具体注解

    

 1 @Api("Hello接口") 
 2 @RestController 
 3 @RequestMapping("/company") 
 4 public class Hello { 
 5      
 6     @ApiOperation(value="/get/hello方法") 
 7     @GetMapping("/get/hello") 
 8     public String hello() { 
 9         return "Hello Zuul springBoot-microcloud-provider-company"; 
10     } 
11      
12 }

 

  注意:这里只是一个小栗子:详细注解含义如下:

 1 @Api() 用于类;表示标识这个类是swagger的资源  
 2 tags–表示说明  
 3 value–也是说明,可以使用tags替代  
 4  
 5 @ApiOperation() 用于方法;表示一个http请求的操作  
 6 value用于方法描述  
 7 notes用于提示内容  
 8  
 9  
10 @ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)  
11 name–参数名  
12 value–参数说明  
13 required–是否必填 
14  
15 @ApiModel()用于类 ;表示对类进行说明,用于参数用实体类接收  
16 value–表示对象名  
17  
18 @ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改  
19 value–字段说明  
20 name–重写属性名字  
21 dataType–重写属性类型  
22 required–是否必填  
23 example–举例说明  
24 hidden–隐藏 
25  
26 @ApiImplicitParam() 用于方法  
27 表示单独的请求参数 
28  
29 @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam  
30 name–参数ming  
31 value–参数说明  
32 dataType–数据类型  
33 paramType–参数类型  
34 example–举例说明 
35  
36 @ApiIgnore 
37 作用于方法上,使用这个注解swagger将忽略这个接口

 

 

  五、重点:在springBoot-user-zuul-swagger项目中添加文档资源配置类DocumentationConfig

       注意:springBoot-user-zuul-swagger必须集成Zuul作为路由访问

 

 1 @Component 
 2 @Primary 
 3 public class DocumentationConfig implements SwaggerResourcesProvider{ 
 4  
 5     @Override 
 6     public List<SwaggerResource> get() { 
 7          List resources = new ArrayList<>(); 
 8             resources.add(swaggerResource("Hello接口", "/study-proxy/company-proxy/v2/api-docs", "1.0")); 
 9             resources.add(swaggerResource("检查系统接口", "/study-proxy/prevention-check/v2/api-docs", "1.0")); 
10             return resources; 
11     } 
12  
13      private SwaggerResource swaggerResource(String name, String location, String version) { 
14             SwaggerResource swaggerResource = new SwaggerResource(); 
15             swaggerResource.setName(name); 
16             swaggerResource.setLocation(location); 
17             swaggerResource.setSwaggerVersion(version); 
18             return swaggerResource; 
19      } 
20 }

 

 

 

  六、在springBoot-user-zuul-swagger的application.yml中添加相关配置:

  

1 spring: 
2   application: 
3     name: springBoot-user-zuul 
4 zuul: 
5   prefix: /study-proxy 
6   ignored-services: "*" 
7   routes:  
8     microcloud-provider-company: /company-proxy/** 
9     ls-prevention-check: /prevention-check/**

 

  七、访问http://localhost:9501/swagger-ui.html

微服务架构下使用Spring Cloud Zuul作为网关将多个微服务整合到一个Swagger服务上详解架构师

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/6880.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论