springBoot(12)---整合Swagger2
阿新 • • 發佈:2018-12-11
Spingboot整合Swagger2
隨著網際網路技術的發展,一般開發都是前後端分離,那麼前端和後端的唯一聯絡,變成了API介面;API文件變成了前後端開發人員聯絡的紐帶,變得越來越重要,沒有API
文件工具之前,大家都是手寫API文件的,在什麼地方書寫的都有,有在confluence上寫的,有在對應的專案目錄下readme.md上寫的,每個公司都有每個公司的玩法,無所謂好
壞。但都有一個很大的詬病就是,如果你的介面改動了,那你必須記得去改你的API文件,而Swagger並不需要。swagger就是一款讓你更好的書寫API文件的框架。
一、專案搭建
1、pom.xml
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
2、application.yml
server:
port: 8086
#代表當前環境是dev環境
spring:
profiles:
active: dev
3、Swagger2DevConfig(配置類)
注意新增@EnableSwagger2
@Configuration @EnableSwagger2 public class Swagger2DevConfig { //預設pro環境 @Profile({"default", "pro"}) @Bean public Docket createWebApi() { return new Docket(DocumentationType.SWAGGER_2).enable(false).select().build(); } //dev環境介面訪問地址:http://localhost:8086/swagger-ui.html @Profile("dev") @Bean public Docket createWebApiDev() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfoDev()).select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)).paths(PathSelectors.any()).build(); } //測試環境介面訪問地址: test.jincou.com/user/swagger-ui.html @Profile("test") @Bean public Docket createWebApiTest() { return new Docket(DocumentationType.SWAGGER_2).host("test.jincou.com/user") .protocols(Sets.newHashSet("https")).apiInfo(apiInfoDev()).select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)).paths(PathSelectors.any()).build(); } private ApiInfo apiInfoDev() { return new ApiInfoBuilder().title("使用者模組API").description( "使用者api介面文件\n" + "\n" + "測試環境:https://test.jincou.com/user\n").contact(new Contact("張三", "", "")) .version("1.0").build(); } }
4、PersonController
這裡提供了兩個介面
@Api(tags = "使用者相關介面") @RestController @RequestMapping(value = "/web/api/person") public class PersonController { @ApiOperation(value = "使用者詳細資訊", notes = "通過id獲得使用者詳細資訊") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "使用者ID", required = true, paramType = "query", defaultValue = "0")}) @RequestMapping(value="page",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE ) public Person getById(@RequestParam(value="id",defaultValue = "0") Long id){ return new Person(id,2,"小小","杭州"); } //大咖分頁列表 @ApiOperation(value = "刪除使用者資訊", notes = "通過ID刪除使用者資訊") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "使用者ID", required = true, paramType = "query", defaultValue = "0")}) @RequestMapping(value="delete",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE ) public String delete(@RequestParam(value="id",defaultValue = "0") Long id){ return "刪除成功"; } }
5、Person實體類
@ApiModel(description = "使用者詳細資訊") public class Person { @ApiModelProperty(value = "使用者Id", position = 1) private Long id; @ApiModelProperty(value = "使用者年齡", position = 2) private int age; @ApiModelProperty(value = "使用者姓名", position = 3) private String name; @ApiModelProperty(value = "使用者所在城市", position = 4) private String city; public Person(Long id,int age,String name,String city){ this.id=id; this.age=age; this.city=city; this.name=name; } //提供get和set方法 }
6、本地啟動測試
訪問:http://localhost:8086/swagger-ui.html。
我只是偶爾安靜下來,對過去的種種思忖一番。那些曾經的舊時光裡即便有過天真愚鈍,也不值得譴責。畢竟,往後的日子,還很長。不斷鼓勵自己,
天一亮,又是嶄新的起點,又是未知的征程(上校15)