昨天的大新闻---国家的相关监管部门正式出台了“网约车”的合法法规!滴滴,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\rest\ActiveController.php中
public function actions()
{
return [
'index' => [
'class' => 'yii\rest\IndexAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
'view' => [
'class' => 'yii\rest\ViewAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
'create' => [
'class' => 'yii\rest\CreateAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
'scenario' => $this->createScenario,
],
'update' => [
'class' => 'yii\rest\UpdateAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
'scenario' => $this->updateScenario,
],
'delete' => [
'class' => 'yii\rest\DeleteAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
'options' => [
'class' => 'yii\rest\OptionsAction',
],
];
}
这是默认的接口方法,那么如何重写呢?我们可以在Controller中重写action()这个函数从而实现重写
namespace api\modules\v1\controllers;
use Yii;
use yii\rest\ActiveController;
use yii\data\ActiveDataProvider;
use api\models\Order;
class UsersController extends ActiveController {
public $modelClass = 'api\modules\v1\models\User';
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\rest\UrlRule',
'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