yii2框架-restful的自定义api(二十二)
昨天的大新闻---国家的相关监管部门正式出台了“网约车”的合法法规!滴滴,UBER,易到,神州专车等积极响应,表示支持网约车的新规!一方面看来是这些企业受益,其实从侧面映射中国的移动互联网中的o2o服务,分享经济和共享经济的模式已经在国家层面得到很好的支持,在管理,监管,安全,实惠等方面都会以法律的形式来规范责任。那么对于用户来说,这也是一件好事,因为我们以后做的车不再是黑车了。
中国的移动互联网的发展催生了很多新型的经济模式,这些模式从一定程度上是在改变人们的生活,促进社会的进步的。特别是关乎到老百姓的日常生活,安全食品的这些经济实体,政府也是在一步一步的论证“网约车”的合法性。分享经济的新业态模式下,必须要有更规范的出行规定来规范运营和责任主体,这对中国的出行市场是一个肯定和鼓励。
另外一个在无人驾驶的领域,目前百度和google是走在前面的,无论技术还是路段测试,两者的优势都是很大的。但是由于政府的监管制度不同,百度的无人驾驶计划在国内已经得到政府的政策支持--百度与安徽省芜湖市人民政府在北京正式签订合作协议,宣布将在芜湖共同建设“全无人驾驶汽车运营区域”。这种政策是有利于促进无人驾驶技术在中国出行市场的应用的,也是目前百度在政策上的优势。而美国对于无人驾驶的相关政策似乎还没有什么的规定,合法化,商业化的暂时不明!
啪啪啪,回归正题,继续关于restful风格的自定义api接口
上一节主要了解关于yii2的restful的基本入门,那么如果想不按照yii2默认规定的那些写接口来,如何重写或者自定义呢?
我们可以在Controller中重写action()这个函数从而实现重写
b)actions方法的执行$actions = parent::actions();然后将$actions的需要重写的方法禁用(删除),然后return $actions 就没有这个方法了,所以就会执行内联操作actionIndex()这个方法,而我们的重写业务就是在这个actionIndex()方法中。其他的方法也是这样子重写。
如果我们想在自己定义不同的api接口方法呢?
那么我们可以通过配置实现,在main.php的主文件中
a)"GET versions" => "version",代表获取接口版本,例如http://localhost/lianxi/XML/advanced/api/web/v1/users/versions ,对应的内联操作actionVersion();
c)"POST newusers" => "add",代表添加一个用户,例如http://localhost/lianxi/XML/advanced/api/web/v1/users/newusers,对应的内联操作actionAdd();
中国的移动互联网的发展催生了很多新型的经济模式,这些模式从一定程度上是在改变人们的生活,促进社会的进步的。特别是关乎到老百姓的日常生活,安全食品的这些经济实体,政府也是在一步一步的论证“网约车”的合法性。分享经济的新业态模式下,必须要有更规范的出行规定来规范运营和责任主体,这对中国的出行市场是一个肯定和鼓励。
另外一个在无人驾驶的领域,目前百度和google是走在前面的,无论技术还是路段测试,两者的优势都是很大的。但是由于政府的监管制度不同,百度的无人驾驶计划在国内已经得到政府的政策支持--百度与安徽省芜湖市人民政府在北京正式签订合作协议,宣布将在芜湖共同建设“全无人驾驶汽车运营区域”。这种政策是有利于促进无人驾驶技术在中国出行市场的应用的,也是目前百度在政策上的优势。而美国对于无人驾驶的相关政策似乎还没有什么的规定,合法化,商业化的暂时不明!
啪啪啪,回归正题,继续关于restful风格的自定义api接口
上一节主要了解关于yii2的restful的基本入门,那么如果想不按照yii2默认规定的那些写接口来,如何重写或者自定义呢?
在yii estActiveController.php中
public function actions() { return [ "index" => [ "class" => "yii estIndexAction", "modelClass" => $this->modelClass, "checkAccess" => [$this, "checkAccess"], ], "view" => [ "class" => "yii estViewAction", "modelClass" => $this->modelClass, "checkAccess" => [$this, "checkAccess"], ], "create" => [ "class" => "yii estCreateAction", "modelClass" => $this->modelClass, "checkAccess" => [$this, "checkAccess"], "scenario" => $this->createScenario, ], "update" => [ "class" => "yii estUpdateAction", "modelClass" => $this->modelClass, "checkAccess" => [$this, "checkAccess"], "scenario" => $this->updateScenario, ], "delete" => [ "class" => "yii estDeleteAction", "modelClass" => $this->modelClass, "checkAccess" => [$this, "checkAccess"], ], "options" => [ "class" => "yii estOptionsAction", ], ]; }这是默认的接口方法,那么如何重写呢?
我们可以在Controller中重写action()这个函数从而实现重写
namespace apimodulesv1controllers; use Yii; use yii estActiveController; use yiidataActiveDataProvider; use apimodelsOrder; class UsersController extends ActiveController { public $modelClass = "apimodulesv1modelsUser"; public function actions() { $actions = parent::actions(); // 禁用""index,delete" 和 "create" 操作 unset($actions["index"],$actions["delete"], $actions["create"]); return $actions; } //重写index的业务实现 public function actionIndex() { $modelClass = $this->modelClass; return new ActiveDataProvider([ "query" => $modelClass::find()->asArray(), "pagination" => false ]); } }a)因为访问的时候先去执行actions方法里面的对应独立操作,如果找不到再去找对应的内联操作。
b)actions方法的执行$actions = parent::actions();然后将$actions的需要重写的方法禁用(删除),然后return $actions 就没有这个方法了,所以就会执行内联操作actionIndex()这个方法,而我们的重写业务就是在这个actionIndex()方法中。其他的方法也是这样子重写。
如果我们想在自己定义不同的api接口方法呢?
那么我们可以通过配置实现,在main.php的主文件中
"urlManager" => [ "enablePrettyUrl" => true, "showScriptName" => false, "rules" => [ [ "class" => "yii estUrlRule", "controller" => ["v1/users"], "pluralize" => false, "extraPatterns" => [ "GET versions" => "version", "GET search/<id:d+>" => "search", "POST newusers" => "add" ], ], ], ],"extraPatterns"这个属性是额外模式配置
a)"GET versions" => "version",代表获取接口版本,例如http://localhost/lianxi/XML/advanced/api/web/v1/users/versions ,对应的内联操作actionVersion();
b)"GET searches/<id:d+>" => "search", 代表搜索一个指定id的用户,例如http://localhost/lianxi/XML/advanced/api/web/v1/users/searches/1,对应的内联操作actionSearches();
c)"POST newusers" => "add",代表添加一个用户,例如http://localhost/lianxi/XML/advanced/api/web/v1/users/newusers,对应的内联操作actionAdd();
我们只需要在控制器中实现这些方法,完成相应的逻辑业务,那么各个需要的接口就完成了。
友情推荐
本人已开源基于swoole扩展实现的轻量级框架
https://github.com/bingcool/swoolefy
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: yii2框架-理解yii2的架构(一)
- 下一篇: yii2框架-console的cli模式(二十)