介绍基于ThinkPHP6的注解路由+自动接口文档生成+自动Mock测试数据生成
发布时间 - 2021-06-21 00:00:00 点击率:次下面由thinkphp框架教程栏目给大家介绍基于 thinkphp6 的注解路由 + 自动接口文档生成 + 自动mock测试数据生成,希望对需要的朋友有所帮助!
基于 ThinkPHP6 的注解路由 + 自动接口文档生成 + 自动测试数据生成
作者
zsw zswemail@qqcom主页 https://zsw.inkgithub https://github.com/iszsw/mockgitee https://gitee.com/iszsw/mock
使用
1、安装
composer require iszsw/mock:dev-master
2、添加测试代码 在 app/controller 目录下增加Test.php文件
ntroller;
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 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="标题", example="name")
* @Mock("create_time", mode="response", title="创建时间", example={"date": {"Y-m-d", "now"}})
* @Mock("content", mode="response", title="内容", example={"sentence": 10})
* @Mock("image", mode="response", title="图片", example="randomDigit")
* @MockPack("user", main=true, mode="response", title="用户", description="发布者信息", limit=0)
* @Mock("username", mode="response", title="用户名", example="name")
* @MockPack("user")
* @MockPack("articles")
* @Mock("page", mode="response", title="页码", example="randomDigitNotNull", description="当前页码")
*/
public function mock(){}
}3、复制文档资源文件 vendor/iszsw/mock/src/static 文件夹放置到public下
如果路径不不是 /static 可以在config/mock.php配置文件中修改
4、 访问
注解路由:/test?username=zsw 测试数据:/mock?mock=1 接口文档:/wiki
功能说明
配置文件 config/mock.php
1、注解路由
路由注解 模型注解 自动注入同Tp6官方注解新增AutoValidate注解
@AutoValidate({"username":"require|chsAlpha"}, message={"username":"请输入用户名"})2、接口测试数据生成
MockPack 嵌套数据生成支持无限级嵌套
@MockPack extends MockBase
// 数据长度 0表示单层数据
@var int limit
/*
* 置顶 (limit > 1 时有效)
* 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="标题", example="name")
* @Mock("content", mode="response", title="内容", example={"sentence": 10})
*
* @MockPack("user", main=true, mode="response", title="用户", description="发布者信息", limit=0)
* @Mock("username", mode="response", title="用户名", example="name")
* @MockPack("user")
*
* @MockPack("articles")
*/
生成结果
{
"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": "谷致远"
}
}, {
"title": "郑文",
"content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.",
"user": {
"username": "宁丽娟"
}
}]
}Mock 数据生成
@Mock extends MockBase
/**
* 自定义字符串 example="zsw"
* Faker方法名 参考https://github.com/fzaninotto/Faker
* 自定义方法名 \app\logic\Mock::name
* example="方法名" || example={"方法名": {"参数1", "参数2"}}
*/
@var string|array example3、接口文档生成
使用参考
1、注解路由
2、接口测试数据生成
生成的数据格式为
{ "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": "谷致远" } }, { "title": "郑文", "content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.", "user": { "username": "宁丽娟" } }] }3、接口文档生成
# php # composer # thinkphp # Static # require # 接口 # public # github # https # gitee # 首页 # 文章列表 # 文档 # 测试数据 # 请输入 # 自定义 # 配置文件 # 致远 # 丽娟 # 给大家
相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571 】
相关推荐: Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程 Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境 如何在万网ECS上快速搭建专属网站? Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧 如何快速查询网址的建站时间与历史轨迹? bootstrap日历插件datetimepicker使用方法 浅述节点的创建及常见功能的实现 如何在云主机快速搭建网站站点? Laravel如何处理异常和错误?(Handler示例) 常州企业网站制作公司,全国继续教育网怎么登录? 济南网站建设制作公司,室内设计网站一般都有哪些功能? 极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异? 如何快速重置建站主机并恢复默认配置? Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比 Laravel集合Collection怎么用_Laravel集合常用函数详解 lovemo网页版地址 lovemo官网手机登录 jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】 laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法 网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏? javascript读取文本节点方法小结 东莞市网站制作公司有哪些,东莞找工作用什么网站好? Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置 Android实现代码画虚线边框背景效果 如何快速生成ASP一键建站模板并优化安全性? Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制 Laravel如何实现用户注册和登录?(Auth脚手架指南) Laravel如何使用Gate和Policy进行授权?(权限控制) Bootstrap CSS布局之列表 怎么用AI帮你设计一套个性化的手机App图标? 如何在IIS服务器上快速部署高效网站? Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程 什么是JavaScript解构赋值_解构赋值有哪些实用技巧 Laravel如何实现全文搜索功能?(Scout和Algolia示例) 高防服务器:AI智能防御DDoS攻击与数据安全保障 Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程 轻松掌握MySQL函数中的last_insert_id() 使用C语言编写圣诞表白程序 HTML 中如何正确使用模板变量为元素的 name 属性赋值 中国移动官方网站首页入口 中国移动官网网页登录 如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体 Java遍历集合的三种方式 宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法 儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册? 用v-html解决Vue.js渲染中html标签不被解析的问题 如何挑选优质建站一级代理提升网站排名? PHP正则匹配日期和时间(时间戳转换)的实例代码 如何用PHP快速搭建CMS系统? 进行网站优化必须要坚持的四大原则 android nfc常用标签读取总结 如何快速生成专业多端适配建站电话?

