本篇文章給大家分享的是有關(guān)基于ThinkPHP6 的注解路由以及如何進(jìn)行自動接口文檔和自動測試數(shù)據(jù)的生成,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)西盟免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
> 1、安裝
composer require iszsw/mock
> 2、添加測試代碼 在 app/controller 目錄下增加Test.php文件
<!--?php namespace app\controller; use app\BaseController; use iszsw\mock\annotation\illustrate\AutoValidate; use iszsw\mock\annotation\illustrate\Route; use iszsw\mock\annotation\illustrate\Mock; use iszsw\mock\annotation\illustrate\MockPack; use iszsw\mock\annotation\illustrate\WikiItem; use iszsw\mock\annotation\illustrate\WikiMenu; /** * @WikiMenu("測試") * [@package](https://my.oschina.net/u/925486) app\controller * Author: zsw zswemail@qq.com */ class Test extends BaseController { /** * @Route("test", method="GET") * @WikiItem("首頁", description="首頁詳情") * * @AutoValidate({"username":"require|chsAlpha"}, message={"username":"請輸入用戶名"}) * @Mock("username", mode="request", title="用戶名", 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="用戶", description="發(fā)布者信息", limit=0) * @Mock("username", mode="response", title="用戶名", example="name") * @MockPack("user") * @MockPack("articles") * @Mock("page", mode="response", title="頁碼", example="randomDigitNotNull", description="當(dāng)前頁碼") */ public function mock(){} }
--> 3、 訪問路由、測試數(shù)據(jù)、接口文檔
路由:/test?username=zsw 數(shù)據(jù):/mock?mock=1 文檔:/wiki
> 路由注解 模型注解 自動注入同Tp6官方注解
> 新增AutoValidate注解
@AutoValidate({"username":"require|chsAlpha"}, message={"username":"請輸入用戶名"})
> MockPack 嵌套數(shù)據(jù)生成支持 無限級嵌套
@MockPack extends MockBase // 數(shù)據(jù)長度 0表示單層數(shù)據(jù) @var int limit /* * 置頂 (limit > 1 時(shí)有效) * false:['fields'=>[["a"=>"b"], ["aa"=>"bb"]]] * true:[["a"=>"b"], ["aa"=>"bb"]] */ @var boolean main
例:
// MockPack(key) MockPack中key相同值之間組成一層嵌套 /** * @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="用戶", description="發(fā)布者信息", limit=0) * @Mock("username", mode="response", title="用戶名", example="name") * @MockPack("user") * * @MockPack("articles") */ 生成結(jié)果 { "articles": [{ "title": "喬陽", "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 * 自定義方法名 \app\logic\Mock::name * example="方法名" || example={"方法名": {"參數(shù)1", "參數(shù)2"}} */ @var string|array example
<!--?php /** * @WikiMenu("測試") */ class Test extends BaseController { /** * @Route("test", method="GET") * @WikiItem("首頁", description="首頁詳情") * @Mock("name", mode="response", title="名字", example="name", description="名字") */ public function index(){ return "zsw"; } }
<?php namespace app\controller; use app\BaseController; use iszsw\mock\annotation\illustrate\Route; use iszsw\mock\annotation\illustrate\Mock; use iszsw\mock\annotation\illustrate\MockPack; use iszsw\mock\annotation\illustrate\WikiItem; use iszsw\mock\annotation\illustrate\WikiMenu; /** * @WikiMenu("測試") */ 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="用戶", description="發(fā)布者信息", limit=0) * @Mock("username", mode="response", title="用戶名", example="name") * @MockPack("user") * * @MockPack("articles") */ public function mock(){} }
生成的數(shù)據(jù)格式為
{ "articles": [{ "title": "喬陽", "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": "寧麗娟" } }] }
<?php namespace app\controller; use iszsw\mock\annotation\illustrate\Route; use iszsw\mock\annotation\illustrate\WikiItem; use iszsw\mock\annotation\illustrate\WikiMenu; /** * @WikiMenu("測試") */ class Test { /** * @Route("test", method="GET") * @WikiItem("首頁", description="首頁詳情") * @Mock("username", mode="request", title="用戶名", example="name") * @Mock("name", mode="response", title="名字", example={"\app\controller\Mock::name": {100}}, description="文章ID") */ public function index($username){} }
以上就是基于ThinkPHP6 的注解路由以及如何進(jìn)行自動接口文檔和自動測試數(shù)據(jù)的生成,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站名稱:基于ThinkPHP6的注解路由以及如何進(jìn)行自動接口文檔和自動測試數(shù)據(jù)的生成
轉(zhuǎn)載注明:http://www.rwnh.cn/article42/jdcsec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、建站公司、標(biāo)簽優(yōu)化、小程序開發(fā)、網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)