yii2.0--reseful实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myhuashengmi/article/details/73822127

因为最近项目中要用到restful,就研究了下,发现在成规下还是很灵活很简洁的;但是扩展性不太好;所以又该用原来的api了,趁此有机会简单记录下yii restful的实现。

  1. 配置URL规则,然后,修改有关在应用程序配置的urlManager组件的配置:
'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        ['class' => 'yii\rest\UrlRule',
         'controller' =>['user']
         'extraPatterns' => [ 'POST search' => 'create'],
         'pluralize'=>false
         ],
    ],
]

可以通过配置 only 和 except 选项来明确列出哪些行为支持, 哪些行为禁用。
也可以通过配置 patterns 或 extraPatterns 重新定义现有的模式或添加此规则支持的新模式。
提示: Yii 将在末端使用的控制器的名称自动变为复数。(译注:个人感觉这里应该变为注意) 你可以用 yii\rest\UrlRule::$pluralize-属性来配置此项。

2 . 创建一个控制器类 app\controllers\UserController 如下,

namespace app\controllers;

use yii\rest\ActiveController;

class UserController extends ActiveController
{
    public $modelClass = 'app\models\User';
}

控制器类扩展自 yii\rest\ActiveController。通过指定 modelClass 作为 app\models\User, 控制器就能知道使用哪个模型去获取和处理数据。

3 . 继承 ActiveController

yii\rest\ActiveController 默认提供所有这些动作通过actions() 方法申明,可覆盖actions()方法配置或禁用这些动作

public function actions()
{
    $actions = parent::actions();
    // 禁用"post"  动作
    unset($actions['post']);
    return $actions;
}

public function actionCreate(){
    //TODO user login       
}

4.格式化相应

设置返回数据类型为json格式

use yii\web\Response;

public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
    return $behaviors;
}
尝试
随着以上所做的最小的努力,你已经完成了创建用于访问用户数据 的 RESTful 风格的 API。你所创建的 API 包括:
GET /users: 逐页列出所有用户
HEAD /users: 显示用户列表的概要信息
POST /users: 创建一个新用户
GET /users/123: 返回用户 123 的详细信息
HEAD /users/123: 显示用户 123 的概述信息
PATCH /users/123 and PUT /users/123: 更新用户123
DELETE /users/123: 删除用户123
OPTIONS /users: 显示关于末端 /users 支持的动词
OPTIONS /users/123: 显示有关末端 /users/123 支持的动词

从上处我们可以发现 PUT/PATCH 等更新用户信息 必须携带参数;即使重写。

猜你喜欢

转载自blog.csdn.net/myhuashengmi/article/details/73822127
今日推荐