<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?試試這個(gè)神器!

          共 2909字,需瀏覽 6分鐘

           ·

          2020-10-01 03:49

          今天給大家安利一款接口文檔生成器——JApiDocs。

          Swagger想必大家都用過(guò)吧,非常方便,功能也十分強(qiáng)大。如果非要說(shuō)Swaager有什么缺點(diǎn),想必就是注解寫(xiě)起來(lái)比較麻煩。如果我說(shuō)有一款不用寫(xiě)注解,就可以生成文檔的工具,你心動(dòng)了嗎?他就是我們今天的主角——JApiDocs。

          下面我們一起來(lái)看看如何使用!


          一、添加依賴

          <dependency>
          ??<groupId>io.github.yedaxiagroupId>

          ??<artifactId>japidocsartifactId>
          ??<version>1.3version>
          dependency>



          二、配置生成參數(shù)

          我們新建一個(gè)項(xiàng)目,然后隨便寫(xiě)一個(gè)main方法,增加生成文檔的配置,然后運(yùn)行main方法。

          DocsConfig?config?=?new?DocsConfig();
          config.setProjectPath("F:\\Java旅途\\japi-docs");?//?項(xiàng)目根目錄
          config.setProjectName("japi-docs");?//?項(xiàng)目名稱
          config.setApiVersion("V1.0");???????//?聲明該API的版本
          config.setDocsPath("F:\\test");?//?生成API?文檔所在目錄
          config.setAutoGenerate(Boolean.TRUE);??//?配置自動(dòng)生成
          Docs.buildHtmlDocs(config);?//?執(zhí)行生成文檔



          三、編碼規(guī)范

          由于JApiDocs是通過(guò)解析Java源碼來(lái)實(shí)現(xiàn)的,因此如果要想實(shí)現(xiàn)想要的文檔,還是需要遵循一定的規(guī)范。

          3.1 類注釋、方法注釋和屬性注釋

          如果我們想生成類的注釋,我們可以直接在類上加注釋,也可以通過(guò)加@description來(lái)生成。

          /**
          ?*?用戶接口類
          ?*/

          @RequestMapping("/api/user")
          @RestController
          public?class?UserController?{}

          /**
          ?*?@author?Java旅途
          ?*?@Description?用戶接口類
          ?*?@Date?2020-06-15?21:46
          ?*/

          @RequestMapping("/api/user")
          @RestController
          public?class?UserController?{}

          如果我們想生成方法的注釋,只能直接加注釋,不能通過(guò)加@description來(lái)生成。

          /**
          ?*?查詢用戶
          ?*?@param?age?年齡
          ?*?@return?R
          */

          @GetMapping("/list")
          public?R?list(@RequestParam?int?age){

          ????User?user?=?new?User("Java旅途",?18);
          ????return?R.ok(user);
          }

          JApiDocs可以自動(dòng)生成實(shí)體類,關(guān)于實(shí)體類屬性的注釋有三種方式,生成的效果都是一樣的,如下:

          /**
          ?*?用戶名稱
          ?*/

          private?String?name;
          /**
          ?*?用戶年齡
          ?*/

          private?int?age;

          //?用戶名稱
          private?String?name;
          //?用戶年齡
          private?int?age;

          private?String?name;//?用戶名稱
          private?int?age;//?用戶年齡

          他除了支持咱們常用的model外,還支持IOS的model生成效果如下:

          3.2 請(qǐng)求參數(shù)

          如果提交的表單是 application/x-www-form-urlencoded 類型的key/value格式,則我們通過(guò)@param注解來(lái)獲取參數(shù),在參數(shù)后面添加注釋,示例如下:

          /**
          ??*?@param?age?年齡
          ??*/

          @GetMapping("/list")
          public?R?list(@RequestParam?int?age){
          ????User?user?=?new?User("Java旅途",?18);
          ????return?R.ok(user);
          }

          生成的文檔效果如下:

          請(qǐng)求參數(shù)

          如果提交的表單是 application/json 類型的json數(shù)據(jù)格式,如下:

          /**
          ??*?@param?user
          ??*?@return
          ??*/

          @PostMapping("/add")
          public?R?add(@RequestBody?User?user){
          ????return?R.ok(user);
          }

          生成的文檔效果如下:

          請(qǐng)求參數(shù)

          {
          ??"name":?"string?//用戶名稱",
          ??"age":?"int?//用戶年齡"
          }

          3.3 響應(yīng)結(jié)果

          我們知道,如果Controller聲明了@RestController,SpringBoot會(huì)把返回的對(duì)象直接序列成Json數(shù)據(jù)格式返回給前端。JApiDocs也利用了這一特性來(lái)解析接口返回的結(jié)果,但由于JApiDocs是靜態(tài)解析源碼的,因此你要明確指出返回對(duì)象的類型信息,JApiDocs支持繼承、泛型、循環(huán)嵌套等復(fù)雜的類解析。

          因此我們不需要再寫(xiě)注釋,它會(huì)根據(jù)我們的返回結(jié)果進(jìn)行解析,效果如下:

          返回結(jié)果:

          {
          ??"code":?"int",
          ??"msg":?"string",
          ??"data":?{
          ????"name":?"string?//用戶名稱",
          ????"age":?"int?//用戶年齡"
          ??}
          }

          最終,我們生成的接口文檔,如下:



          四、高級(jí)配置

          4.1 @ApiDoc

          如果你不希望把所有的接口都導(dǎo)出,我們可以在配置中設(shè)置config.setAutoGenerate(Boolean.FALSE);然后在想要生成的接口上添加@ApiDoc。

          @ApiDoc有以下三個(gè)屬性:

          • result: 這個(gè)可以直接聲明返回的對(duì)象類型,如果你聲明了,將會(huì)覆蓋SpringBoot的返回對(duì)象

          • url: 請(qǐng)求URL,擴(kuò)展字段,用于支持非SpringBoot項(xiàng)目

          • method: 請(qǐng)求方法,擴(kuò)展字段,用于支持非SpringBoot項(xiàng)目

          @ApiDoc(result?=?User.class,?url?=?"/api/user/view",?method?=?"post")

          4.2 @Ignore

          如果你不想導(dǎo)出對(duì)象里面的某個(gè)字段,可以給這個(gè)字段加上@Ignore注解,這樣JApiDocs導(dǎo)出文檔的時(shí)候就會(huì)自動(dòng)忽略掉了。

          public?class?User?{
          ????@Ignore
          ????private?int?age;
          }



          五、總結(jié)

          JApiDocs就介紹到這里了,優(yōu)勢(shì)劣勢(shì)大家很容易就看出來(lái)了。幾乎不需要注釋即可生成接口文檔,僅有的幾個(gè)注釋我們也可以通過(guò)ide來(lái)自動(dòng)生成。但是JApiDocs不具備Swagger在線調(diào)試功能。如果有一天JApiDocs支持在線調(diào)試后,那時(shí)候肯定會(huì)有一大波追隨者,畢竟寫(xiě)代碼的誰(shuí)喜歡寫(xiě)多余的注解!



          有道無(wú)術(shù),術(shù)可成;有術(shù)無(wú)道,止于術(shù)

          歡迎大家關(guān)注Java之道公眾號(hào)


          好文章,我在看??

          瀏覽 61
          點(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>
                  中文字幕丰满乱孑伦无码专区 | 欧美精品久久久又大又粗 | 一级a片丰满女人性爱免费视频 | 日本乱伦毛片 | 日韩高清一级片 |