基于ThinkPHP6的注解路由以及如何進(jìn)行自動(dòng)接口文檔和自動(dòng)測(cè)試數(shù)據(jù)的生成

本篇文章給大家分享的是有關(guān)基于ThinkPHP6 的注解路由以及如何進(jìn)行自動(dòng)接口文檔和自動(dòng)測(cè)試數(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è)人才,有力地推動(dòng)了近千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

使用

> 1、安裝

composer require iszsw/mock

> 2、添加測(cè)試代碼 在 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("測(cè)試")
 * [@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":"請(qǐng)輸入用戶名"})
     * @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、 訪問路由、測(cè)試數(shù)據(jù)、接口文檔

路由:/test?username=zsw

數(shù)據(jù):/mock?mock=1

文檔:/wiki

功能說明

1、注解路由

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

> 新增AutoValidate注解

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

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

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

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

3、接口文檔生成

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

使用參考

1、注解路由

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

<?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("測(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="用戶", 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": "寧麗娟"
		}
	}]
}

3、接口文檔生成

<?php
namespace app\controller;

use iszsw\mock\annotation\illustrate\Route;
use iszsw\mock\annotation\illustrate\WikiItem;
use iszsw\mock\annotation\illustrate\WikiMenu;

/**
 * @WikiMenu("測(cè)試")
 */
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)行自動(dòng)接口文檔和自動(dòng)測(cè)試數(shù)據(jù)的生成,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:基于ThinkPHP6的注解路由以及如何進(jìn)行自動(dòng)接口文檔和自動(dòng)測(cè)試數(shù)據(jù)的生成
轉(zhuǎn)載注明:http://bm7419.com/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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化