TRR · v0.0.2 · 路由篇
嗝嗝 7/22/2019
TRR
v0.0.2
路由篇
日常
乐趣
- 问:程序猿最讨厌康熙的哪个儿子?
- 答:胤禩,因为他是八阿哥(bug)。
简介
route.php
文件位置在:route/route.php
原因
为了减少编辑路由文件route.php
,
也为了减少错误的配置情况,
当然还有一点是我懒啊,
不希望去做重复并且有迹可循的事情,
所以做了这个扩展。
参考
注意事项
主要参考tp5.1的内置路由实现模式,
发现编码起来不太友好,
很多东西需要写很多,
而我需要简化工作内容,
所以我就自己写了解析规则。
- ThinkPHP5.1 注解路由: 👉 点我了解 👈
思路
某些参数还是需要手动哈
)
第一次:我采取编辑器自动注解模式来完成功能(项目地址
- github: https://github.com/china-wangyu/TP5.1-Restful-Api
- 码云: https://gitee.com/china_wangyu/TP5.1-Restful-Api
效果如下:
<?php
namespace app\api\controller\v1;
/**
* Class Auth Auth授权类
* @package app\api\controller\v1
*/
class Auth extends Base
{
/**
* @doc 获取服务器授权1
* @route /api/v1/auth get
* @param string $appSecret 授权字符 require|alphaNum 1
* @param string $appSec2t 授权字符1 require|alphaNum 1
* @param string $appId 开发者ID
* @success {"code":400,"msg":"appSecret不能为空","data":[]}
* @error {"code":400,"msg":"appSecret不能为空","data":[]}
*/
public function read()
{
return $this->success('成功~',$this->param);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
其实,使用起来没有什么大问题,主要是看着注解在编辑器里有一条条波浪线〰
,说实话看起来不爽,那就重来
第二次,我采取手动注解模式
项目地址
- github: https://github.com/china-wangyu/TRR
- 码云: https://gitee.com/china_wangyu/TRR
效果如下:
<?php
/** Created By wene<china_wangyu@aliyun.com>, Data: 2019/7/3 */
namespace app\api\controller\v1;
/**
* Class Book
* @doc(图书类)
* @group('v1/book')
* @middleware('Validate')
* @package app\api\controller\v1
*/
class Book
{
/**
* @doc('创建图书')
* @route('','get')
* @param('name','图书名称','require|graph|length:1,50')
* @param('img','图书img','require|graph|length:1,16')
* @return \think\response\Json
* @success('')
* @error('')
*/
public function create()
{
return json(['msg'=>'创建成功'],200);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
提示
有了第一次实现的基础,第二次实现快了许多,也简单了许多,并且对代码做了很多优化和熔炼,为了方便大家阅读源码。
并且,我也密切关注波浪线〰
这个问题,并解决了它(希望@all 可以在@param上写其他的注解操作,避免~
出现)。
原创不易,希望大家多支持和谅解。
使用
安装扩展
composer require wangyu/tp-anntation
1
模块注解路由注册参数说明
名称 | 作用 | 形态 | 举例 |
---|---|---|---|
\WangYu\annotation\Route::reflex('api'); | 注册模块路由函数 | \WangYu\annotation\Route::reflex(string:'模块名称',array:中间件集合) | \WangYu\annotation\Route::reflex('api',[]) |
模块注解路由注册
在route\route.php
中添加以下内容:
<?php
\WangYu\annotation\Route::reflex('api'); # 注册注解`api`模块路由
return[];
1
2
3
4
5
2
3
4
5
路由注解参数
路由注解参数表
名称 | 作用 | 类 | 方法 | 形态 | 举例 |
---|---|---|---|---|---|
doc | 类 /方法 功能描述 | ☑ | ☑ | @doc('类 /方法 功能描述') | @doc('创建图书') |
middleware | 类 /方法 中间件注册 | ☑ | ☑ | @middleware('中间件名称1',...) | @middleware('Validate') |
group | 类 路由分组 | ☑ | ️ | @group('分组rule') | @group('v1/book') |
route | 方法 路由注册, 如果存在类路由分组 @group 注解函数, 就会把 方法 @route 路由rule , 拼接到类 @group 路由分组rule 之后,并用 / 链接 | ️ | ☑ | @route('rule','method') | @route('create','post') |
路由注解参数使用样例
@doc
注解函数
类
示例:
<?php /** Created By wene<china_wangyu@aliyun.com>, Data: 2019/7/3 */ namespace app\api\controller\v1; /** * Class Book * @doc(图书类) * @package app\api\controller\v1 */ class Book{}
1
2
3
4
5
6
7
8
9
10
11方法
示例:
/** * @doc('创建图书') */ public function create() { return json(['msg'=>'创建成功'],200); }
1
2
3
4
5
6
7
@middleware
注解函数
类 示例:
<?php /** Created By wene<china_wangyu@aliyun.com>, Data: 2019/7/3 */ namespace app\api\controller\v1; /** * Class Book * @doc(图书类) * @middleware('Validate','Auth') * @package app\api\controller\v1 */ class Book{}
1
2
3
4
5
6
7
8
9
10
11
12方法 示例:
/** * @doc('创建图书') * @middleware('Auth1','Auth2') */ public function create() { return json(['msg'=>'创建成功'],200); }
1
2
3
4
5
6
7
8
@group
注解函数
类
示例:
<?php /** Created By wene<china_wangyu@aliyun.com>, Data: 2019/7/3 */ namespace app\api\controller\v1; /** * Class Book * @doc(图书类) * @middleware('Validate','Auth') * @group('v1/book') * @package app\api\controller\v1 */ class Book{}
1
2
3
4
5
6
7
8
9
10
11
12
13
@route
注解函数
类
示例:
/** * @doc('创建图书') * @route('create','post') */ public function create() { return json(['msg'=>'创建成功'],200); }
1
2
3
4
5
6
7
8
访问
举例:
TRR
项目application/api/controller/v1
下创建Goods.php
在内容:
<?php
/** Created By wene<china_wangyu@aliyun.com>, Data: 2019/7/3 */
namespace app\api\controller\v1;
/**
* Class Goods
* @doc(商品测试类)
* @group('v1/goods')
* @middleware('Validate')
* @package app\api\controller\v1
*/
class Goods
{
/**
* @doc('创建商品')
* @route('','post')
* @return \think\response\Json
*/
public function create()
{
return json([
'class'=>'application/api/controller/v1/Goods.php',
'action'=>'create'
],200);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
postman
中访问
在接口测试工具请求地址默认不带项目的网址哈,请自行补充,
请求方式:post
请求地址:http://你的网址/v1/goods
请求参数:
请求结果:
{
"class": "application\/api\/controller\/v1\/Goods.php",
"action": "create"
}
1
2
3
4
2
3
4
如上,证明你已经能成功使用TRR的注解路由。谢谢您的耐心阅读和使用TRR
,我将用更多的时间来让它更加丰富和优秀。