yii2-搭建RESTful Api:实战教程【基础篇-附带采坑经验】(一)

一. 先安装yii2.0高级的应用程序模板

      操作:这里不做详细介绍,官方文档上一个命令解决

二. 复制文件/目录,修改对应配置文件/命名空间

      ① 将backend整个目录复制一份出来,重新命名为api放在项目根目录

          yii2-搭建RESTful Api:实战教程【基础篇-附带采坑经验】(一)_第1张图片

      ② 打开api/config/main.php修改配置文件中(id,controllerNamespace配置)

return [
    'id' => 'app-api',   //改成app-api
    'basePath' => dirname(__DIR__),
    'controllerNamespace' => 'api\controllers',    //还有控制器的命名空间
     ……//还有一堆配置文件
]

       ③ 在yii当中,当我们创建一个新的模块或者子模块我们都要在common/config/boostrap.php写个别名

Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');    //这个是我新增进来的

      ④ 对应的控制器代码也要做出相应修改,模型层还是老样子

      ⑤ URL美化,前面我有写过相对应的文章讲解过,根据RESTful配置,我这边把本地贴出来大家参考下

return[
    'components' => [
        "urlManager" => [
           "enablePrettyUrl" => true,
           "enableStrictParsing" => false,
           "rules" => [
                [
                    'class' => 'yii\rest\UrlRule',//如果提示这个类找不到,就是引入的位置错误了
                    'controller' => 'user',   //要把请求接口相对应的控制器都要加进来
                    'pluralize' => false,    //设置为false 就可以去掉复数形式了
                ],//注意,这个地方写的格式
                'GET get-user'=>'user/get-user' //路由映射(可有可不有,美观效果,当然也有隐藏我们真是路由的功效)
           ],
        ],
        …… 
    ]
    ……
]
/*这里有个坑,在yii的中国官方论坛里,有个博主在GET get-user 这行前面添加了参数:extraPatterns会导致项目报错,这边路由的映射直接写到rules的数组的第二个参数这边,千万别写到里面去了*/

     ⑥ 配置response相关信息

"components" => [
    'response' => [
        'class' => 'yii\web\Response',
           'on beforeSend' => function ($event) {
               $response = $event->sender;
               //这一块要根据自己的业务逻辑,定义返回对应数据格式,以及相对应的状态码code
               $response->data = [
                  'success' => $response->isSuccessful,
                  'code' => 0, //可以根据自己的业务逻辑,成功失败这边自己定义
                  'message' => $response->statusText,
                  'data' => $response->data,
              ];
        },
    ],
]

 

你可能感兴趣的:(PHP,Yii,API)