1. 程式人生 > >基於SpringCloud的Microservices架構實戰案例-線上API管理

基於SpringCloud的Microservices架構實戰案例-線上API管理

simplemall專案前幾篇回顧:

原始碼地址:https://github.com/backkoms/simplemall

前端和後端的唯一聯絡,變成了API介面;API文件變成了前後端開發人員聯絡的紐帶,變得越來越重要,swagger就是一款讓你更好的書寫API文件的框架。 本實戰案例中也引入swagger2作為API管理工具,下面羅列下swagger2+SpringBoot使用步驟。

SpringBoot整合Swagger2

第一步,pom配置

  1. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->

  2. <dependency>

  3. <groupId>io.springfox</groupId>

  4. <artifactId>springfox-swagger2</artifactId>

  5. <version>2.6.1</version>

  6. </dependency>

  7. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->

  8. <dependency>

  9. <groupId>io.springfox</groupId>

  10. <artifactId>

    springfox-swagger-ui</artifactId>

  11. <version>2.6.1</version>

  12. </dependency>

第二步編寫配置管理類Swagger2Config

  1. package com.simplemall.micro.serv.page;

  2. import org.springframework.context.annotation.Bean;

  3. import org.springframework.context.annotation.Configuration;

  4. import io.swagger.annotations.ApiOperation

    ;

  5. import springfox.documentation.builders.ApiInfoBuilder;

  6. import springfox.documentation.builders.PathSelectors;

  7. import springfox.documentation.builders.RequestHandlerSelectors;

  8. import springfox.documentation.service.ApiInfo;

  9. import springfox.documentation.spi.DocumentationType;

  10. import springfox.documentation.spring.web.plugins.Docket;

  11. import springfox.documentation.swagger2.annotations.EnableSwagger2;

  12. /**

  13. * swagger2 configuration

  14. *

  15. * @author guooo

  16. *

  17. */

  18. @Configuration//SpringBoot啟動時自動裝載

  19. @EnableSwagger2//開啟swagger2功能,缺失的話同樣無法開啟ui頁面

  20. publicclassSwagger2Config{

  21. @Bean

  22. publicDocket createRestApi(){

  23. returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()

  24. .apis(RequestHandlerSelectors.basePackage("com.simplemall.micro.serv.page.api"))

  25. .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

  26. .paths(PathSelectors.any())

  27. .build();

  28. }

  29. privateApiInfo apiInfo(){

  30. returnnewApiInfoBuilder().title("Front app Swagger apis").description("For micro-service 's app to use")

  31. .version("V1.0").build();

  32. }

  33. }

經過以上兩步簡單的配置後,可以直接進行介面程式碼的編寫。

  1. @Api(value ="使用者服務", tags ="使用者服務介面")

  2. @RestController

  3. @RefreshScope// 使用該註解的類,會在接到SpringCloud配置中心配置重新整理的時候,自動將新的配置更新到該類對應的欄位中。需要重新觸發載入動作可以使用POST方式請求/refresh介面,該介面位於spring-boot-starter-actuator依賴,呼叫前需新增否則404。

  4. publicclassAPIAccountController{

  5. @ApiOperation(value ="使用者登陸")

  6. @RequestMapping(value ="acc/login", method ={RequestMethod.POST })

  7. publicRestAPIResult<String> login(@ApiParam(value ="手機號")@RequestParam(required =true)String phone,

  8. @ApiParam(value ="密碼")@RequestParam(required =true)String password,HttpSession session){

  9. RestAPIResult<String> restAPIResult =newRestAPIResult<>();

  10. Account<