SpringBoot結合swagger自動生成API文件
Web開發常採用前後端分離的方式。前後端通過API進行互動,在Swagger UI中,前後端人員能夠直觀預覽並且測試API,方便前後端人員同步開發。
在SpringBoot中整合swagger,步驟如下:
1.將下面的依賴新增到Maven專案的pom.xml檔案中。springfox-swagger2元件幫助我們自動生成描述API的json檔案,而springfox-swagger-ui元件就是將這個json檔案解析出來,用一種更友好的方式呈現出來。
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency>
2.新增Swaager的配置類
package com.example.demo.config; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableSwagger2 @Configuration public class SwaggerConfig { @Bean public Docket swaggerSpringMvcPlugin() { return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build(); } }
3.在需要暴露的API上新增需要在Swagger UI頁面上顯示的應用相關的介紹資訊。舉個例子吧~
在Controller類上新增@API註解,說明該類的作用;該類下包含增刪改查五個方法,給大家一個全面的示範,至於service、dao層的實現,留給大家自己發揮吧~主要是在方法上新增@ApiOperation,@ApiImplicitParam註解,作用是對方法以及引數的說明。
package com.example.demo.controller;
import com.example.demo.service.AreaService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.demo.entity.Area;
import java.util.*;
@Api(description = "AreaController相關的api")
@RestController
@RequestMapping("/superadmin")
public class AreaController {
@Autowired
private AreaService areaService;
@ApiOperation(value="查詢區域資訊" ,notes = "查詢資料庫中所有區域資訊")
@RequestMapping(value="/listarea" , method = RequestMethod.GET)
private Map<String,Object> listArea(){
Map<String,Object> modelMap = new HashMap<String, Object>() ;
List<Area> list = areaService.getAreaList();
modelMap.put("areaList" , list);
return modelMap;
}
@ApiOperation(value="根據id查詢區域資訊" ,notes = "查詢資料庫中某個區域資訊")
@ApiImplicitParam(name="areaId",value="區域ID",paramType="query",required = true,dataType = "int")
@RequestMapping(value="/getareabyid" ,method = RequestMethod.GET)
private Map<String,Object> getAreaById(@RequestParam("areaId") Integer areaId){
Map<String,Object> modelMap = new HashMap<String, Object>() ;
Area area = areaService.getAreaById(areaId);
modelMap.put("areaList" , area);
return modelMap;
}
@ApiOperation(value="新增區域資訊",notes="根據Area物件新增區域資訊")
@ApiImplicitParam(name="area",value="區域資訊",required=true,dataType="Area")
@RequestMapping(value="/addarea" ,method = RequestMethod.POST)
private Map<String,Object> addArea(@RequestBody Area area){
Map<String,Object> modelMap = new HashMap<String, Object>() ;
modelMap.put("success" ,areaService.addArea(area));
return modelMap;
}
@ApiOperation(value="修改區域資訊",notes="根據Area物件修改區域資訊")
@ApiImplicitParam(name="area",value="區域資訊",required=true,dataType="Area")
@RequestMapping(value="/modifyarea" ,method = RequestMethod.POST)
private Map<String,Object> modifyArea(@RequestBody Area area){
Map<String,Object> modelMap = new HashMap<String, Object>() ;
modelMap.put("success" ,areaService.modifyArea(area));
return modelMap;
}
@ApiOperation(value="刪除區域資訊",notes="根據區域ID刪除區域資訊")
@ApiImplicitParam(name="areaId",value="區域ID",required=true,dataType="int")
@RequestMapping(value="/removearea" ,method = RequestMethod.GET)
private Map<String,Object> removeArea(@RequestParam("areaId") Integer areaId){
Map<String,Object> modelMap = new HashMap<String, Object>() ;
modelMap.put("success",areaService.deleteArea(areaId));
return modelMap;
}
}
4.啟動SpringBoot專案,訪問http://localhost:8080/demo/swagger-ui.html頁面,注意了,我這裡是因為在application.properties配置了專案路徑server.servlet.context-path=/demo,所以才在上面的url加上/demo,一般若無特殊的配置,直接訪問http://localhost:8080/swagger-ui.html即可。
Swagger UI介面絕對有顏有值!畫面小清新,而且API非常直觀。點選頁面上的url,可檢視API文件api-docs,不僅如此,咱們是可以測試介面的喲~簡單測個 根據id查詢區域資訊 的介面吧,點選將其展開。
點選 Try it out ,咱們得輸個int型別的區域ID做引數,輸入完後點擊execute後就可以看到結果啦!
遲到兩年的swagger,算是正式認識了。
日ji