这是权威指南:http://www.yiichina.com/doc/guide/2.0/rest-quick-start,可以认真看看。
首先我们在yii2的高级框架中将api接口作为一个应用,也就是和fronted,backend是同级的应用。那么我们就可以在api这个应用中以模块化设计来实现版本化的设计。
(2)修改配置文件
在api的config的文件下面,有一个boostrap.php的文件和main.php的主配置文件,因为这是我们新建的api应用,所以必须要设置api的别名。
'controllerNamespace' => 'api\controllers',
'modules' => [
'v1' => [
'class' => 'api\modules\v1\Module'
]
],
这个核心的控制器是设计restful的base类,我们创建的控制器必须继承这个yii\rest\ActiveController
通过指定 yii\rest\ActiveController::modelClass 作为 api\modules\v1\models\User, 控制器就能知道使用哪个模型去获取和处理数据。
(4)配置路由组件
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => ['v1/user']
],
],
]
随着以上所做的最小的努力,你已经完成了创建用于访问用户数据 的 RESTful 风格的 API。你所创建的 API 包括:yii\rest\ActiveController的actions
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',
],
];
}
分别对应不同的独立的操作,这些独立的操作也对应这不同的访问urlrules。在yii/rest/UrlRule中
public $patterns = [
'PUT,PATCH {id}' => 'update',
'DELETE {id}' => 'delete',
'GET,HEAD {id}' => 'view',
'POST' => 'create',
'GET,HEAD' => 'index',
'{id}' => 'options',
'' => 'options',
];
简单地说,当我们post方式创建新用户
get方式获取id=1的用户
put方式更新id=1的用户名为‘成龙’
delete方式删除id=29的用户