gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

介紹基于ThinkPHP6的注解路由+自動(dòng)接口文檔生成+自動(dòng)Mock測(cè)試數(shù)據(jù)生成

下面由thinkphp框架教程欄目給大家介紹基于 ThinkPHP6 的注解路由 + 自動(dòng)接口文檔生成 + 自動(dòng)Mock測(cè)試數(shù)據(jù)生成,希望對(duì)需要的朋友有所幫助!

基于 ThinkPHP6 的注解路由 + 自動(dòng)接口文檔生成 + 自動(dòng)測(cè)試數(shù)據(jù)生成

作者

zsw zswemail@qqcom

主頁(yè) https://zsw.ink

github https://github.com/iszsw/mock

gitee https://gitee.com/iszsw/mock

使用

1、安裝

composer require iszsw/mock:dev-master

2、添加測(cè)試代碼 在 app/controller 目錄下增加Test.php文件

<?php namespace appcontroller;  use appBaseController; use iszswmockannotationillustrateAutoValidate; use iszswmockannotationillustrateRoute; use iszswmockannotationillustrateMock; use iszswmockannotationillustrateMockPack; use iszswmockannotationillustrateWikiItem; use iszswmockannotationillustrateWikiMenu;  /**  * @WikiMenu("測(cè)試")  * @package appcontroller  * Author: zsw zswemail@qq.com  */ class Test extends BaseController {      /**      * @Route("test", method="GET")      * @WikiItem("首頁(yè)", description="首頁(yè)詳情")      *      * @AutoValidate({"username":"require|chsAlpha"}, message={"username":"請(qǐng)輸入用戶(hù)名"})      * @Mock("username", mode="request", title="用戶(hù)名", example="name")      * @Mock("name", mode="response", title="名字", example="name", description="文章ID")      */     public function index($username){         return "hello " . $username;     }      /**      * @Route("mock", method="GET")      * @WikiItem("詳情", description="文章詳情")      *      * @Mock("id", title="ID", example="numberBetween", description="文章ID")      * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=5)      * @Mock("id", mode="response", title="ID", example="randomDigitNotNull", description="文章ID")      * @Mock("title", mode="response", title="標(biāo)題", example="name")      * @Mock("create_time", mode="response", title="創(chuàng)建時(shí)間", example={"date": {"Y-m-d", "now"}})      * @Mock("content", mode="response", title="內(nèi)容", example={"sentence": 10})      * @Mock("image", mode="response", title="圖片", example="randomDigit")      * @MockPack("user", main=true, mode="response", title="用戶(hù)", description="發(fā)布者信息", limit=0)      * @Mock("username", mode="response", title="用戶(hù)名", example="name")      * @MockPack("user")      * @MockPack("articles")      * @Mock("page", mode="response", title="頁(yè)碼", example="randomDigitNotNull", description="當(dāng)前頁(yè)碼")      */     public function mock(){} }

3、復(fù)制文檔資源文件 vendor/iszsw/mock/src/static 文件夾放置到public下

<br>如果路徑不不是 /static 可以在config/mock.php配置文件中修改

4、 訪問(wèn)

注解路由:/test?username=zsw  測(cè)試數(shù)據(jù):/mock?mock=1  接口文檔:/wiki

功能說(shuō)明

配置文件 config/mock.php

1、注解路由

路由注解 模型注解 自動(dòng)注入同Tp6官方注解

新增AutoValidate注解

@AutoValidate({"username":"require|chsAlpha"}, message={"username":"請(qǐng)輸入用戶(hù)名"})

2、接口測(cè)試數(shù)據(jù)生成

MockPack 嵌套數(shù)據(jù)生成支持無(wú)限級(jí)嵌套

@MockPack extends MockBase     // 數(shù)據(jù)長(zhǎng)度 0表示單層數(shù)據(jù)     @var int limit           /*      * 置頂 (limit > 1 時(shí)有效)      * false:['fields'=>[["a"=>"b"], ["aa"=>"bb"]]]      * true:[["a"=>"b"], ["aa"=>"bb"]]      */     @var boolean main

例:

/**  * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=3)  * @Mock("title", mode="response", title="標(biāo)題", example="name")  * @Mock("content", mode="response", title="內(nèi)容", example={"sentence": 10})  *  * @MockPack("user", main=true, mode="response", title="用戶(hù)", description="發(fā)布者信息", limit=0)  * @Mock("username", mode="response", title="用戶(hù)名", example="name")  * @MockPack("user")  *   * @MockPack("articles")  */   生成結(jié)果  {     "articles": [{         "title": "喬陽(yáng)",         "content": "Vero impedit et consequatur quasi doloribus dolores illum sit expedita doloremque fugiat esse deleniti quisquam.",         "user": {             "username": "方建明"         }     }, {         "title": "蒙桂花",         "content": "Iure explicabo officiis minima et impedit sunt dignissimos necessitatibus ratione animi nam aperiam dolorum.",         "user": {             "username": "谷致遠(yuǎn)"         }     }, {         "title": "鄭文",         "content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.",         "user": {             "username": "寧麗娟"         }     }] }

Mock 數(shù)據(jù)生成

@Mock extends MockBase     /**       * 自定義字符串 example="zsw"       * Faker方法名 參考https://github.com/fzaninotto/Faker       * 自定義方法名 applogicMock::name       * example="方法名" || example={"方法名": {"參數(shù)1", "參數(shù)2"}}       */     @var string|array example

3、接口文檔生成

<?php /**  * @WikiMenu("測(cè)試")  */ class Test extends BaseController {     /**      * @Route("test", method="GET")      * @WikiItem("首頁(yè)", description="首頁(yè)詳情")      * @Mock("name", mode="response", title="名字", example="name", description="名字")      */     public function index(){         return "zsw";     } }

使用參考

1、注解路由

2、接口測(cè)試數(shù)據(jù)生成

<?php namespace appcontroller;  use appBaseController; use iszswmockannotationillustrateRoute; use iszswmockannotationillustrateMock; use iszswmockannotationillustrateMockPack; use iszswmockannotationillustrateWikiItem; use iszswmockannotationillustrateWikiMenu;  /**  * @WikiMenu("測(cè)試")  */ class Test extends BaseController {     /**      * @Route("mock", method="GET")      * @WikiItem("詳情", description="文章詳情")      * @Mock("id", title="ID", example="numberBetween", description="文章ID")      *       * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=3)      * @Mock("title", mode="response", title="標(biāo)題", example="name")      * @Mock("content", mode="response", title="內(nèi)容", example={"sentence": 10})      *      * @MockPack("user", main=true, mode="response", title="用戶(hù)", description="發(fā)布者信息", limit=0)      * @Mock("username", mode="response", title="用戶(hù)名", example="name")      * @MockPack("user")      *       * @MockPack("articles")      */     public function mock(){} }

生成的數(shù)據(jù)格式為

{     "articles": [{         "title": "喬陽(yáng)",         "content": "Vero impedit et consequatur quasi doloribus dolores illum sit expedita doloremque fugiat esse deleniti quisquam.",         "user": {             "username": "方建明"         }     }, {         "title": "蒙桂花",         "content": "Iure explicabo officiis minima et impedit sunt dignissimos necessitatibus ratione animi nam aperiam dolorum.",         "user": {             "username": "谷致遠(yuǎn)"         }     }, {         "title": "鄭文",         "content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.",         "user": {             "username": "寧麗娟"         }     }] }

3、接口文檔生成

<?php namespace appcontroller;  use iszswmockannotationillustrateRoute; use iszswmockannotationillustrateWikiItem; use iszswmockannotationillustrateWikiMenu;  /**  * @WikiMenu("測(cè)試")  */ class Test {      /**      * @Route("test", method="GET")      * @WikiItem("首頁(yè)", description="首頁(yè)詳情")      * @Mock("username", mode="request", title="用戶(hù)名", example="name")      * @Mock("name", mode="response", title="名字", example={"appcontrollerMock::name": {100}}, description="文章ID")      */     public function index($username){} }

介紹基于ThinkPHP6的注解路由+自動(dòng)接口文檔生成+自動(dòng)Mock測(cè)試數(shù)據(jù)生成介紹基于ThinkPHP6的注解路由+自動(dòng)接口文檔生成+自動(dòng)Mock測(cè)試數(shù)據(jù)生成

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
人妻熟妇乱又伦精品视频| 国产二区视频在线| 日韩精品一区二区三区色欲av| 黄色一级片免费播放| 天天干天天爽天天射| 国产精品宾馆在线精品酒店| 精品无码国产一区二区三区av| a级黄色片免费| 成人区一区二区| 成人网站免费观看入口| 国产玉足脚交久久欧美| 少妇高潮喷水在线观看| 国产原创中文在线观看| 国产午夜福利在线播放| 男女午夜激情视频| 黄色三级视频片| 激情五月婷婷基地| 亚洲免费av网| 成年女人18级毛片毛片免费| 日韩视频在线视频| 亚欧在线免费观看| 一级一片免费播放| 免费无码毛片一区二三区| 中文字幕乱码人妻综合二区三区| 黄色片一级视频| 冲田杏梨av在线| 中文字幕色呦呦| 那种视频在线观看| 樱花草www在线| 男女激情免费视频| 天天操天天爽天天射| 日本黄色播放器| 人妻熟妇乱又伦精品视频| 午夜视频你懂的| 日韩精品久久一区二区| 男女啪啪网站视频| 免费看黄色a级片| 一区二区三区 日韩| 超碰10000| 在线观看的毛片| 日韩五码在线观看| 福利视频999| 免费高清在线观看免费| 亚洲制服中文字幕| 国产av无码专区亚洲精品| 香蕉视频色在线观看| 免费无码毛片一区二三区| www.51色.com| 99视频在线视频| 激情综合在线观看| 国产精品久久久久久久乖乖| www.精品在线| 六月丁香婷婷在线| av日韩一区二区三区| 久久99国产精品一区| 久久午夜夜伦鲁鲁一区二区| 大陆av在线播放| 女人被男人躁得好爽免费视频| 欧美午夜aaaaaa免费视频| a级黄色一级片| 成人免费视频91| 成人午夜免费在线视频| 91精品国产吴梦梦| 香蕉视频xxxx| 五月六月丁香婷婷| 永久免费黄色片| 成人亚洲免费视频| 激情文学亚洲色图| 成年网站免费在线观看| www.国产福利| 日韩av影视大全| 99亚洲精品视频| 成人国产一区二区三区| 国产日韩第一页| 东北少妇不带套对白| 99热自拍偷拍| 日本va中文字幕| 中文字幕久久av| 欧美日韩在线免费观看视频| 激情图片qvod| 免费看又黄又无码的网站| 尤物av无码色av无码| 欧美日韩亚洲一| 成年网站在线播放| 欧美视频亚洲图片| www.国产在线播放| 国产a级一级片| www.久久久久久久久久久| 日韩高清在线一区二区| 国产精品一色哟哟| 国产av无码专区亚洲精品| 少妇黄色一级片| 国产在线观看欧美| 国产97色在线 | 日韩| 亚洲天堂网站在线| 亚洲不卡中文字幕无码| 成人性生生活性生交12| 欧美日韩视频免费在线观看| 免费在线观看亚洲视频| 亚洲第一色av| 狠狠97人人婷婷五月| 欧美精品 - 色网| 国产极品尤物在线| 日本特级黄色大片| 精品视频无码一区二区三区| 黄色录像特级片| 激情网站五月天| 拔插拔插海外华人免费| 亚洲国产成人va在线观看麻豆| 91网站在线观看免费| 国产永久免费网站| 国产午夜伦鲁鲁| 欧美视频在线第一页| 成人日韩在线视频| 女人另类性混交zo| 国产真实老熟女无套内射| 日本中文字幕二区| 亚洲性生活网站| 成熟丰满熟妇高潮xxxxx视频| 欧美aaa在线观看| 欧美成人乱码一二三四区免费| 777久久久精品一区二区三区| 成人黄色片免费| 国产91av视频在线观看| 天天摸天天舔天天操| 亚洲无吗一区二区三区| 欧美日韩亚洲第一| 国产男女无遮挡| 男女视频网站在线观看| 91亚洲精品国产| 99er在线视频| 精品一区二区三区无码视频| 日本精品福利视频| 免费观看黄色大片| www.久久com| 日韩一级片一区二区| av动漫在线播放| 麻豆tv在线播放| 国内外成人免费激情视频| 国产精品wwwww| 亚洲欧洲日本精品| 伊人成人免费视频| 中国 免费 av| 无码 制服 丝袜 国产 另类| 2019日韩中文字幕mv| www.男人天堂网| www.com毛片| 亚洲xxx在线观看| 超碰成人在线免费观看| 乱熟女高潮一区二区在线| 久久av综合网| 色一情一乱一伦一区二区三区日本| 9久久婷婷国产综合精品性色 | 一级黄色特级片| 在线观看av免费观看| 免费看日b视频| 国产福利视频在线播放| 亚洲黄色av片| 成人毛片一区二区| 妺妺窝人体色www在线观看| 国产欧美一区二| 欧洲精品一区二区三区久久| 成人3d动漫一区二区三区| youjizz.com亚洲| 久久久久久久激情| 男女啪啪的视频| 久久综合久久色| 日本福利视频在线观看| 日本一极黄色片| 精品国产一区二区三区无码| 婷婷激情四射五月天| 97在线免费视频观看| 欧美精品性生活| 18禁免费观看网站| 波多野结衣免费观看| 国产精品wwwww| 欧美午夜性视频| 亚洲在线观看网站| 人人干人人视频| 久久久久久久久久久99| 亚洲女人在线观看| 久久99爱视频| 日韩av资源在线| 激情深爱综合网| 成年人深夜视频| 手机在线视频你懂的| 黄色永久免费网站| 四虎永久在线精品无码视频| 2022中文字幕| 国产卡一卡二在线| 亚洲高清视频免费| 日韩va在线观看| 制服丝袜综合网| 牛夜精品久久久久久久| 色婷婷综合久久久久中文字幕| 国产www免费| 欧美色图色综合| 日韩毛片在线免费看| 欧美精品一区免费| 午夜肉伦伦影院|