<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          還在用Swagger?試試這款零注解侵入的API文檔生成工具,跟Postman絕配!

          共 4886字,需瀏覽 10分鐘

           ·

          2021-11-07 01:35


          源?/?? ? ? ??文/?

          前后端接口聯(lián)調(diào)需要API文檔,我們經(jīng)常會(huì)使用工具來生成。之前經(jīng)常使用Swagger來生成,最近發(fā)現(xiàn)一款好用的API文檔生成工具smart-doc, 它有著很多Swagger不具備的特點(diǎn),推薦給大家。

          聊聊Swagger

          在我們使用Swagger的時(shí)候,經(jīng)常會(huì)需要用到它的注解,比如@Api@ApiOperation這些,Swagger通過它們來生成API文檔。比如下面的代碼:

          Swagger對(duì)代碼的入侵性比較強(qiáng),有時(shí)候代碼注釋和注解中的內(nèi)容有點(diǎn)重復(fù)了。有沒有什么工具能實(shí)現(xiàn)零注解入侵,直接根據(jù)代碼注釋生成API文檔呢?smart-doc恰好是這種工具!

          smart-doc簡(jiǎn)介

          smart-doc是一款A(yù)PI文檔生成工具,無需多余操作,只要你規(guī)范地寫好代碼注釋,就能生成API文檔。同時(shí)能直接生成Postman調(diào)試文件,一鍵導(dǎo)入Postman即可調(diào)試,非常好用!

          smart-doc具有如下優(yōu)點(diǎn):

          生成API文檔

          接下來我們把smart-doc集成到SpringBoot項(xiàng)目中,體驗(yàn)一下它的API文檔生成功能。

          • 首先我們需要在項(xiàng)目中添加smart-doc的Maven插件,可以發(fā)現(xiàn)smart-doc就是個(gè)插件,連依賴都不用添加,真正零入侵啊;
          <plugin>
          ????<groupId>com.github.shalousungroupId>
          ????<artifactId>smart-doc-maven-pluginartifactId>
          ????<version>2.2.8version>
          ????<configuration>
          ????????
          ????????<configFile>./src/main/resources/smart-doc.jsonconfigFile>
          ????????
          ????????<projectName>mall-tiny-smart-docprojectName>
          ????configuration>
          plugin>
          • 接下來在項(xiàng)目的resources目錄下,添加配置文件smart-doc.json,屬性說明直接參考注釋即可;
          {
          ??"serverUrl":?"http://localhost:8088",?//指定后端服務(wù)訪問地址
          ??"outPath":?"src/main/resources/static/doc",?//指定文檔的輸出路徑,生成到項(xiàng)目靜態(tài)文件目錄下,隨項(xiàng)目啟動(dòng)可以查看
          ??"isStrict":?false,?//是否開啟嚴(yán)格模式
          ??"allInOne":?true,?//是否將文檔合并到一個(gè)文件中
          ??"createDebugPage":?false,?//是否創(chuàng)建可以測(cè)試的html頁面
          ??"packageFilters":?"com.macro.mall.tiny.controller.*",?//controller包過濾
          ??"style":"xt256",?//基于highlight.js的代碼高設(shè)置
          ??"projectName":?"mall-tiny-smart-doc",?//配置自己的項(xiàng)目名稱
          ??"showAuthor":false,?//是否顯示接口作者名稱
          ??"allInOneDocFileName":"index.html"?//自定義設(shè)置輸出文檔名稱
          }
          • 打開IDEA的Maven面板,雙擊smart-doc插件的smart-doc:html按鈕,即可生成API文檔;
          • 此時(shí)我們可以發(fā)現(xiàn),在項(xiàng)目的static/doc目錄下已經(jīng)生成如下文件;
          • 運(yùn)行項(xiàng)目,訪問生成的API接口文檔,發(fā)現(xiàn)文檔非常詳細(xì),包括了請(qǐng)求參數(shù)和響應(yīng)結(jié)果的各種說明,訪問地址:http://localhost:8088/doc/index.html
          • 我們回過來看下實(shí)體類的代碼,可以發(fā)現(xiàn)我們只是規(guī)范地添加了字段注釋,生成文檔的時(shí)候就自動(dòng)有了;
          public?class?PmsBrand?implements?Serializable?{
          ????/**
          ?????*?ID
          ?????*/

          ????private?Long?id;

          ????/**
          ?????*?名稱
          ?????*?@required
          ?????*/

          ????private?String?name;

          ????/**
          ?????*?首字母
          ?????*?@since?1.0
          ?????*/

          ????private?String?firstLetter;

          ????/**
          ?????*?排序
          ?????*/

          ????private?Integer?sort;

          ????/**
          ?????*?是否為品牌制造商(0,1)
          ?????*/

          ????private?Integer?factoryStatus;

          ????/**
          ?????*?顯示狀態(tài)(0,1)
          ?????*?@ignore
          ?????*/

          ????private?Integer?showStatus;

          ????/**
          ?????*?產(chǎn)品數(shù)量
          ?????*/

          ????private?Integer?productCount;

          ????/**
          ?????*?產(chǎn)品評(píng)論數(shù)量
          ?????*/

          ????private?Integer?productCommentCount;

          ????/**
          ?????*?品牌logo
          ?????*/

          ????private?String?logo;

          ????/**
          ?????*?專區(qū)大圖
          ?????*/

          ????private?String?bigPic;

          ????/**
          ?????*?品牌故事
          ?????*/

          ????private?String?brandStory;
          ????//省略getter、setter方法
          }
          • 再來看下Controller中代碼,我們同樣規(guī)范地在方法上添加了注釋,生成API文檔的時(shí)候也自動(dòng)有了;
          /**
          ?*?商品品牌管理
          ?*/

          @Controller
          @RequestMapping("/brand")
          public?class?PmsBrandController?{
          ????@Autowired
          ????private?PmsBrandService?brandService;
          ????
          ????/**
          ?????*?分頁查詢品牌列表
          ?????*
          ?????*?@param?pageNum?頁碼
          ?????*?@param?pageSize?分頁大小
          ?????*/

          ????@RequestMapping(value?=?"/list",?method?=?RequestMethod.GET)
          ????@ResponseBody
          ????@PreAuthorize("hasRole('ADMIN')")
          ????public?CommonResult>?listBrand(@RequestParam(value?=?"pageNum",?defaultValue?=?"1")
          ????????????????????????????????????????????????????????????????Integer?pageNum,
          ????????????????????????????????????????????????????????@RequestParam(value?=?"pageSize",?defaultValue?=?"3")
          ????????????????????????????????????????????????????????????????Integer?pageSize)?{
          ????????List?brandList?=?brandService.listBrand(pageNum,?pageSize);
          ????????return?CommonResult.success(CommonPage.restPage(brandList));
          ????}
          }
          • 當(dāng)然smart-doc還提供了自定義注釋tag,用于增強(qiáng)文檔功能;

            • @ignore:生成文檔時(shí)是否要過濾該屬性;
            • @required:用于修飾接口請(qǐng)求參數(shù)是否必須;
            • @since:用于修飾接口中屬性添加的版本號(hào)。
          • 為了寫出優(yōu)雅的API文檔接口,我們經(jīng)常會(huì)對(duì)返回結(jié)果進(jìn)行統(tǒng)一封裝,smart-doc也支持這樣的設(shè)置,在smart-doc.json中添加如下配置即可;

          {
          ??"responseBodyAdvice":{?//統(tǒng)一返回結(jié)果設(shè)置
          ????"className":"com.macro.mall.tiny.common.api.CommonResult"?//對(duì)應(yīng)封裝類
          ??}
          }
          • 我們也經(jīng)常會(huì)用枚舉類型來封裝狀態(tài)碼,在smart-doc.json中添加如下配置即可;
          {
          ??"errorCodeDictionaries":?[{?//錯(cuò)誤碼列表設(shè)置
          ????"title":?"title",
          ????"enumClassName":?"com.macro.mall.tiny.common.api.ResultCode",?//錯(cuò)誤碼枚舉類
          ????"codeField":?"code",?//錯(cuò)誤碼對(duì)應(yīng)字段
          ????"descField":?"message"?//錯(cuò)誤碼描述對(duì)應(yīng)字段
          ??}]
          }
          • 配置成功后,即可在API文檔中生成錯(cuò)誤碼列表
          • 有時(shí)候我們也會(huì)想給某些接口添加自定義請(qǐng)求頭,比如給一些需要登錄的接口添加Authorization頭,在smart-doc.json中添加如下配置即可;
          {
          ??"requestHeaders":?[{?//請(qǐng)求頭設(shè)置
          ????"name":?"Authorization",?//請(qǐng)求頭名稱
          ????"type":?"string",?//請(qǐng)求頭類型
          ????"desc":?"token請(qǐng)求頭的值",?//請(qǐng)求頭描述
          ????"value":"token請(qǐng)求頭的值",?//請(qǐng)求頭的值
          ????"required":?false,?//是否必須
          ????"since":?"-",?//添加版本
          ????"pathPatterns":?"/brand/**",?//哪些路徑需要添加請(qǐng)求頭
          ????"excludePathPatterns":"/admin/login"?//哪些路徑不需要添加請(qǐng)求頭
          ??}]
          }
          • 配置成功后,在接口文檔中即可查看到自定義請(qǐng)求頭信息了。

          使用Postman測(cè)試接口

          我們使用Swagger生成文檔時(shí)候,是可以直接在上面測(cè)試接口的,而smart-doc的接口測(cè)試能力真的很弱,這也許是它擁抱Postman的原因吧,畢竟Postman是非常好用的接口測(cè)試工具,下面我們來結(jié)合Postman使用下!

          • smart-doc內(nèi)置了Postman的json生成插件,可以一鍵生成并導(dǎo)入到Postman中去,雙擊smart-doc:postman按鈕即可生成;
          • 此時(shí)將在項(xiàng)目的static/doc目錄下生成postman.json文件;
          • postman.json文件直接導(dǎo)入到Postman中即可使用;
          • 導(dǎo)入成功后,所有接口都將在Postman中顯示,這下我們可以愉快地測(cè)試接口了!

          總結(jié)

          smart-doc確實(shí)是一款好用的API文檔生成工具,尤其是它零注解侵入的特點(diǎn)。雖然它的接口測(cè)試能力有所不足,但是可以一鍵生成JSON文件并導(dǎo)入到Postman中去,使用起來也是非常方便的!

          參考資料

          官方文檔:https://gitee.com/smart-doc-team/smart-doc/wikis/HOME

          項(xiàng)目源碼地址

          https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-smart-doc



          推薦閱讀


          阿里某leader因年輕下屬不主動(dòng)找活干,提醒對(duì)方繼續(xù)這樣績效不好看,對(duì)方竟直接辭職!


          女程序員做了個(gè)夢(mèng),神評(píng)論。。。


          火遍全國的網(wǎng)絡(luò)熱梗“yyds”,創(chuàng)造者被判刑3年




          END


          頂級(jí)程序員:topcoding

          做最好的程序員社區(qū):Java后端開發(fā)、Python、大數(shù)據(jù)、AI


          一鍵三連「分享」、「點(diǎn)贊」和「在看」


          瀏覽 33
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一区二区三区日屄 | 日韩电影无码一区二区 | 亚洲欧美在线成人电影 | 国产乱伦麻豆 | qyle成人在线视频 |