下面由thinkphp框架教程栏目给大家介绍基于 thinkphp6 的注解路由 + 自动接口文档生成 + 自动mock测试数据生成,希望对需要的朋友有所帮助!
基于 thinkphp6 的注解路由 + 自动接口文档生成 + 自动测试数据生成
作者zsw zswemail@qqcom主页 https://zsw.ink
github https://github.com/iszsw/mock
gitee https://gitee.com/iszsw/mock
使用1、安装composer require iszsw/mock:dev-master
2、添加测试代码 在 app/controller 目录下增加test.php文件<?phpnamespace 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 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下<br>如果路径不不是 /static 可以在config/mock.php配置文件中修改
4、 访问注解路由:/test?username=zsw测试数据:/mock?mock=1接口文档:/wiki
功能说明配置文件 config/mock.php1、注解路由路由注解 模型注解 自动注入同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 example
3、接口文档生成
使用参考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、接口文档生成
以上就是介绍基于thinkphp6的注解路由+自动接口文档生成+自动mock测试数据生成的详细内容。