0. 前言
近期忙於和各個銀行的代收接口聯調,根據遇到的問題,對之前編寫的接口進行了修改,需求收集和設計接口時想到了方方面面,生產環境下還是會遇到意想不到的問題,好在基本的執行邏輯已確定,因此只是對接口進行了一些微調,但是收錢無小事,之前在代碼編寫時對參數進行了很多的校驗,代碼修改之后一個參數的對不上都會導致接口調用的失敗,所以接口文檔也要進行修改。正好趁此機會利用swagger對接口文檔進行了重構,記錄一下搭建過程,也借此談一下對接口設計及文檔編寫的一點心得。
1. 項目中添加swagger插件
引入jar包
<dependency> <groupId>com.fasterxml</groupId> <artifactId>classmate</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.9</version> </dependency> <!-- swagger2核心依賴 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <!-- swagger-ui為項目提供api展示及測試的界面 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> <!-- spring相關jar包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.6.RELEASE</version> </dependency>
<!-- other jars-->
后續配置Maven + SpringMVC項目集成Swagger中有介紹,這里略過。
2. 生成接口
配置swagger只發現配置@Api注解的接口類
只對代收的類進行@Api注解標注,發現里面的所有接口,僅為調試,其他的方法級別的注解懶得加了
訪問 http://localhost:8080/portal/swagger-ui.html#/
可以對每個接口進行傳參調用。
3. 接口文檔編寫的幾項原則
寫接口文檔時首先得知道你的讀者是接口調用方的開發人員,是除你之外需要對這個接口最熟悉的人。所以寫文檔時需要注意幾個原則:
- 格式簡潔:文檔需要有簡潔的書寫格式,體現在文檔目錄的設計、文檔目的、接口介紹語言的精煉。
- 邏輯清晰:文檔內容的介紹需要具有清晰的邏輯,具體到每個接口的介紹、調用及返回,得有清晰的路線。
- 內容全面:接口設計的目的、請求及參數格式、響應及響應格式,最好的檢驗方法是使用者拿到該文檔之后能夠自行成功的完成接口的調用。
- 有據可查:使用者在調用某接口時如果出錯,是否能夠憑借返回信息認識到出錯的原因進而調整,而不必調用失敗時一頭霧水,這需要在設計者接口設計時就設定好各種錯誤的返回標識。
4. 接口文檔內容編寫
4.1 功能介紹
4.1.1 前言
主要介紹方案設計的目的、此方案所有接口共同實現的籠統的功能介紹、接口設計方和接口調用方(一般都是乙方。。。)各方的職責,等等
4.1.2 功能說明
詳細介紹各個接口所實現的功能,使讀者對各接口的作用有一個了解。內容盡量保持簡潔全面,沒必要把底層實現也寫進去。
4.2 系統接口約定
這是整個文檔最重要的部分,使用者可能不會看前言和介紹,但他要實現接口調用,必須參考約定中的請求格式及各項約定。
4.2.1 系統約定
介紹調用者和提供者共同遵守的編碼約定、通信方式(RESTful 風格接口)、數據格式(JSON 或 XML)、編碼方式(UTF-8)等。
4.2.2 接口數據格式
各個接口的請求介紹(請求參數的含義、請求地址、方法名稱、請求格式),響應介紹(響應參數介紹、響應格式)
涉及到其他文件調用的也要詳細介紹文件編寫所要遵循的格式,最好能夠內嵌附件。(如系統對賬,需要讀取ftp服務器上的csv文件內容與系統中比對,文檔中就需要添加csv文件的編寫規范,如:文件命名格式、文件內容格式、大小限制等)
4.3 返回值對照
接口調用成功的話返回約定好的返回值,更需要注意的是接口設計時就需要考慮到捕獲各種錯誤(可通過枚舉在系統中提前定義好各種錯誤的返回值),調用失敗的話返回准確的提示信息,省的調用方一調用出錯就來找你,對雙方的時間都是一種浪費。
5. 接口文檔示例
5.1 目錄展示
5.2 接口請求部分內容
5.2.1 請求格式
介紹各個請求參數的定義和所要遵循的格式
5.2.2 請求地址、方法及格式
5.3 接口響應部分內容
5.3.1 響應格式
介紹各個響應參數的定義和所要遵循的格式
5.3.2 響應參數格式實例
5.4 返回碼對照
定義返回碼的值,調用成功或失敗可參照返回碼