1年前我写过一篇文章是《Yii2 如何实现 RESTful?》,写这篇文章时候我刚刚接触 RESTful 没多久,这1年下来,我的经验又增长了不少,下面我来分享一下我的一些经验。
刚使用 Yii2 来开发 RESTful 的时候我安装官方权威指南操作的,控制器先继承了 yii\rest\ActiveController
,并且使用了 public modelClass
然后就自带了 CRUD 功能。那个时候我就想默认的增删改查接口不一定能满足我的需求啊,所以我简单粗暴的使用了下面这个方式注销了自带的
CRUD,而且还自己写在了自己定义的父类控制器了,这就意味着我所有的控制器都是默认使用了这个方法。
public function actions()
{
$actions = parent::actions();
// 注销系统自带的实现方法
unset($actions['index'], $actions['update'], $actions['create'], $actions['delete'], $actions['view']);
return $actions;
}
然后自己去实现,现在想想那个时候有点太天真了。首先这样做就意味着你的工作量大大增加。 其实你完全没必要「一棒子打死」注销 CRUD,而是看你的需求,每个控制器的情况是不一样的,所以你要结合需求 看情况去注销自带的 CRUD 实现方式。其实大多数情况下默认自带的 CRUD 实现方式都能满足你的需求,大多数你觉得不能满足是因为你不知道 Model 的强大。
返回的数据也不要太纠结。
以后我会慢慢介绍一些技巧,现在我先分享两个。
学会使用 Model fields() 方法
可以看这篇教程:Model fields() 方法的使用
学会使用 Model 的事件
可以看这篇教程:Yii2 自带事件的用法
学会在 URL 中使用
可以看官方教程 Overriding extraFields()
最后就是多看官方的权威指南 http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html
本文由 forecho 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。
如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。
之前有resuful的需求,个人整理的restful的文章:
1.yii2 RESTful 接口 api -1 : 接口的基本配置:
http://www.fancyecommerce.com/2016/05/04/yii2-restful-接口-api-1-:-接口的基本配置/
2.yii2 RESTful 接口 api -2 : 自定义函数:
http://www.fancyecommerce.com/2016/05/04/yii2-restful-接口-api-2-:-自定义函数/
3.yii2 RESTful 接口 api -3 : 账户验证 和 速度控制:
http://www.fancyecommerce.com/2016/05/04/yii2-restful-接口-api-3-:-账户验证-和-速度控制/
4.yii2 RESTful 接口 api -4: restful的测试工具:
http://www.fancyecommerce.com/2016/05/04/yii2-restful-接口-api-4:-restful的测试工具/