基於SpringCloud的Microservices架構實戰案例-線上API管理
simplemall專案前幾篇回顧:
原始碼地址:https://github.com/backkoms/simplemall
前端和後端的唯一聯絡,變成了API介面;API文件變成了前後端開發人員聯絡的紐帶,變得越來越重要,swagger就是一款讓你更好的書寫API文件的框架。 本實戰案例中也引入swagger2作為API管理工具,下面羅列下swagger2+SpringBoot使用步驟。
SpringBoot整合Swagger2
第一步,pom配置
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>
<version>2.6.1</version>
</dependency>
第二步編寫配置管理類Swagger2Config
package com.simplemall.micro.serv.page;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.annotations.ApiOperation
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;
/**
* swagger2 configuration
*
* @author guooo
*
*/
@Configuration//SpringBoot啟動時自動裝載
@EnableSwagger2//開啟swagger2功能,缺失的話同樣無法開啟ui頁面
publicclassSwagger2Config{
@Bean
publicDocket createRestApi(){
returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("com.simplemall.micro.serv.page.api"))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
privateApiInfo apiInfo(){
returnnewApiInfoBuilder().title("Front app Swagger apis").description("For micro-service 's app to use")
.version("V1.0").build();
}
}
經過以上兩步簡單的配置後,可以直接進行介面程式碼的編寫。
@Api(value ="使用者服務", tags ="使用者服務介面")
@RestController
@RefreshScope// 使用該註解的類,會在接到SpringCloud配置中心配置重新整理的時候,自動將新的配置更新到該類對應的欄位中。需要重新觸發載入動作可以使用POST方式請求/refresh介面,該介面位於spring-boot-starter-actuator依賴,呼叫前需新增否則404。
publicclassAPIAccountController{
@ApiOperation(value ="使用者登陸")
@RequestMapping(value ="acc/login", method ={RequestMethod.POST })
publicRestAPIResult<String> login(@ApiParam(value ="手機號")@RequestParam(required =true)String phone,
@ApiParam(value ="密碼")@RequestParam(required =true)String password,HttpSession session){
RestAPIResult<String> restAPIResult =newRestAPIResult<>();
Account<