摘要:但是這種手寫文檔帶來的弊端就是維護起來苦不堪言,對于接口容易發生變化的開發者來說,維護文檔就是噩夢好在現如今市場上書寫文檔的工具有很多,常見的有阿里的但是能稱之為框架的,估計也只有了。
SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規范,引入相關的依賴就可以輕易的搭建出一個 WEB 工程
隨著互聯網技術的發展,現在的網站架構基本都由原來的后端渲染,變成了:前端渲染、前后端分離的形態,而且前端技術和后端技術在各自的道路上越走越遠。
前端和后端唯一聯系,變成了API接口;API文檔自然就成了前后端開發人員聯系的紐帶,變得尤為的重要,swagger就是一款讓你更好的書寫API文檔的框架。
文檔工具沒有API文檔工具之前,基本都是手寫API文檔的,如有在Word上寫的,有在對應的項目目錄下readme.md上寫的,每個公司都有每個公司的玩法,無所謂好壞。但是這種手寫文檔帶來的弊端就是維護起來苦不堪言,對于接口容易發生變化的開發者來說,維護文檔就是噩夢....
好在現如今市場上書寫API文檔的工具有很多,常見的有 postman、yapi、阿里的RAP 但是能稱之為框架的,估計也只有swagger了。
swagger 優缺點
集成方便,功能強大
在線調試與文檔生成
代碼耦合,需要注解支持,但不影響程序性能
導入依賴在 pom.xml 中添加 swagger-spring-boot-starter 的依賴
屬性配置org.springframework.boot spring-boot-starter-web com.battcn swagger-spring-boot-starter 1.4.5-RELEASE
配置spring.swagger.enabled開啟swagger的使用,如果在生產環境中不想用可以在對應的profile下面將它設置為spring.swagger.enabled=false,這樣一來接口就不存在暴露的風險
# 掃描的包路徑,默認掃描所有 spring.swagger.base-package=com.battcn # 默認為 true spring.swagger.enabled=true實體類
swagger 提供了非常齊全的注解,為POJO提供了@ApiModel、@ApiModelProperty,以便更好的渲染最終結果
package com.battcn.entity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; /** * @author Levin * @since 2018/5/10 0007 */ @ApiModel public class User implements Serializable { private static final long serialVersionUID = 8655851615465363473L; private Long id; @ApiModelProperty("用戶名") private String username; @ApiModelProperty("密碼") private String password; // TODO 省略get set }restful 風格接口
注解描述
@Api: 描述Controller
@ApiIgnore: 忽略該Controller,指不對當前類做掃描
@ApiOperation: 描述Controller類中的method接口
@ApiParam: 單個參數描述,與@ApiImplicitParam不同的是,他是寫在參數左側的。如(@ApiParam(name = "username",value = "用戶名") String username)
@ApiModel: 描述POJO對象
@ApiProperty: 描述POJO對象中的屬性值
@ApiImplicitParam: 描述單個入參信息
@ApiImplicitParams: 描述多個入參信息
@ApiResponse: 描述單個出參信息
@ApiResponses: 描述多個出參信息
@ApiError : 接口錯誤所返回的信息
package com.battcn.controller; import com.battcn.entity.User; import com.battcn.swagger.properties.ApiDataType; import com.battcn.swagger.properties.ApiParamType; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; /** * swagger * * @author Levin * @since 2018/5/16 0016 */ @RestController @RequestMapping("/users") @Api(tags = "1.1", description = "用戶管理", value = "用戶管理") public class UserController { private static final Logger log = LoggerFactory.getLogger(UserController.class); @GetMapping @ApiOperation(value = "條件查詢(DONE)") @ApiImplicitParams({ @ApiImplicitParam(name = "username", value = "用戶名", dataType = ApiDataType.STRING, paramType = ApiParamType.QUERY), @ApiImplicitParam(name = "password", value = "密碼", dataType = ApiDataType.STRING, paramType = ApiParamType.QUERY), }) public User query(String username, String password) { log.info("多個參數用 @ApiImplicitParams"); return new User(1L, username, password); } @GetMapping("/{id}") @ApiOperation(value = "主鍵查詢(DONE)") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "用戶編號", dataType = ApiDataType.LONG, paramType = ApiParamType.PATH), }) public User get(@PathVariable Long id) { log.info("單個參數用 @ApiImplicitParam"); return new User(id, "u1", "p1"); } @DeleteMapping("/{id}") @ApiOperation(value = "刪除用戶(DONE)") @ApiImplicitParam(name = "id", value = "用戶編號", dataType = ApiDataType.LONG, paramType = ApiParamType.PATH) public void delete(@PathVariable Long id) { log.info("單個參數用 ApiImplicitParam"); } @PostMapping @ApiOperation(value = "添加用戶(DONE)") public User post(@RequestBody User user) { log.info("如果是 POST PUT 這種帶 @RequestBody 的可以不用寫 @ApiImplicitParam"); return user; } @PutMapping("/{id}") @ApiOperation(value = "修改用戶(DONE)") public void put(@PathVariable Long id, @RequestBody User user) { log.info("如果你不想寫 @ApiImplicitParam 那么 swagger 也會使用默認的參數名作為描述信息 "); } }測試
由于上面的接口是 restful 風格的接口,添加和修改無法通過瀏覽器完成,以前都是自己編寫junit或者使用postman之類的工具。現在只需要打開瀏覽器輸入 http://localhost:8080/swagger-ui.html,更多操作請自行體驗...
總結目前很多大佬都寫過關于 SpringBoot 的教程了,如有雷同,請多多包涵,本教程基于最新的 spring-boot-starter-parent:2.0.2.RELEASE編寫,包括新版本的特性都會一起介紹...
說點什么個人QQ:1837307557
battcn開源群(適合新手):391619659
微信公眾號(歡迎調戲):battcn
個人博客:http://blog.battcn.com/
全文代碼:https://github.com/battcn/spring-boot2-learning/tree/master/chapter10
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71358.html
摘要:另外很容易構建風格的,簡單優雅帥氣,正如它的名字。配置一些基本的信息。三寫生產文檔的注解通過注解表明該接口會生成文檔,包括接口名請求方法參數返回信息的等等。四參考資料中使用構建強大的文檔 swagger,中文拽的意思。它是一個功能強大的api框架,它的集成非常簡單,不僅提供了在線文檔的查閱,而且還提供了在線文檔的測試。另外swagger很容易構建restful風格的api,簡單優雅帥氣...
摘要:特點具備相當的好的靈活性,不僅能夠使用來定義緩存的和各種,還提供開箱即用的緩存臨時存儲方案,也支持和主流的專業緩存例如的集成。其中號代表這是一個表達式,此表達式可以遍歷方法的參數對象,具體語法可以參考的相關文檔手冊。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,...
摘要:特點具備相當的好的靈活性,不僅能夠使用來定義緩存的和各種,還提供開箱即用的緩存臨時存儲方案,也支持和主流的專業緩存例如的集成。其中號代表這是一個表達式,此表達式可以遍歷方法的參數對象,具體語法可以參考的相關文檔手冊。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,...
閱讀 1552·2021-09-22 15:52
閱讀 3459·2021-09-22 14:59
閱讀 2843·2021-09-02 15:12
閱讀 971·2021-08-20 09:35
閱讀 1578·2019-08-30 14:09
閱讀 2709·2019-08-30 13:56
閱讀 1646·2019-08-26 18:27
閱讀 3363·2019-08-26 13:37