一. 先安裝yii2.0高級的應用程序模板
操作:這裏不做詳細介紹,官方文檔上一個命令解決
二. 複製文件/目錄,修改對應配置文件/命名空間
① 將backend整個目錄複製一份出來,重新命名爲api放在項目根目錄
② 打開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'); //這個是我新增進來的
④ 對應的控制器代碼也要做出相應修改,模型層還是老樣子
<?php
namespace api\controllers; //這個因爲目錄是拷貝過來的,記得修改過來
use yii\rest\ActiveController; //這邊引入的文件變成這個了
/**
* User controller
*/
class UserController extends ActiveController
{
public $modelClass = 'common\models\User'; //這個也要加進去,否則會報錯,可以自由實驗下
}
⑤ 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,
];
},
],
]