Yii2 使用 RESTful 寫API介面 執行個體

來源:互聯網
上載者:User

標籤:active   注意   操作   官方文檔   turn   xtend   風格   lru   顯示   

Yii2 使用 RESTful?其實 Yii2 架構本身就對 RESTful 是友好支援的,具體可以看官方文檔(http://www.yiichina.com/doc/guide/2.0/rest-quick-start),或者去看源碼,都是可以的注意: 我們使用resTful的同時,需要藉助於測試載入器進行地址訪問,例如: Google的PostMAN,Firefox的HttpRequester工具來訪問建立一個控制器  我的工作目錄 (首先, 參照下面的目錄圖片,可以看出,我建立了兩個大的檔案夾,v1,v2,目的是測試訪問不同版本的介面)下面以v2中的檔案為例:建立一個控制器類 api\modules\v2\UserController 如下,[php] view plain copy 在CODE上查看代碼片派生到My Code片    namespace api\modules\v2\controllers;            use yii\rest\ActiveController;            class UserController extends ActiveController      {          public $modelClass = ‘api\modules\v2\models\user\UserBaseInfo‘;      }  控制器類擴充自 yii\rest\ActiveController。通過指定 yii\rest\ActiveController::modelClass作為api\modules\v2\models\user\UserBaseInfo, 控制器就能知道使用哪個模型去擷取和處理資料。配置URL規則修改有關在應用程式配置的urlManager組件的配置:[php] view plain copy 在CODE上查看代碼片派生到My Code片    ‘urlManager‘ => [          ‘enablePrettyUrl‘ => true,          ‘enableStrictParsing‘ => true,          ‘showScriptName‘ => false,          ‘rules‘ => [              [‘class‘ => ‘yii\rest\UrlRule‘, ‘controller‘ => ‘user‘],            ],      ]  說明:        a): 上面的配置主要是為user控制器增加一個 URL 規則。這樣,使用者的資料就能通過美化的 URL 和有意義的 http 動詞進行訪問和操作。      b): 上面是沒有加上版本的url配置,至於關於版本我將以新的一篇來說明.配置另外的:[php] view plain copy 在CODE上查看代碼片派生到My Code片    ‘controllerNamespace‘ => ‘api\controllers‘,      ‘components‘ => [              ‘user‘ => [                  ‘identityClass‘ => ‘api\modules\v1\models\oauth\AccessToken‘,                  ‘enableAutoLogin‘ => true,                  ‘enableSession‘ => false,                  ‘loginUrl‘ => null              ],  嘗試隨著以上所做的最小的努力,你已經完成了建立用於訪問使用者資料的 RESTful 風格的 API。你所建立的 API 包括:相比於URL管理的Web應用程式,上述主要的新東西是通過RESTful API請求yii\rest\UrlRule。這個特殊的URL規則類將會建立一整套子URL規則來支援路由和URL建立的指定的控制器。例如, 上面的代碼中是大致按照下面的規則:[    ‘PUT,PATCH users/<id>‘ => ‘user/update‘,    ‘DELETE users/<id>‘ => ‘user/delete‘,    ‘GET,HEAD users/<id>‘ => ‘user/view‘,    ‘POST users‘ => ‘user/create‘,    ‘GET,HEAD users‘ => ‘user/index‘,    ‘users/<id>‘ => ‘user/options‘,    ‘users‘ => ‘user/options‘,]    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 支援的動詞補充:Yii 將在末端使用的控制器的名稱自動變為複數。(譯註:個人感覺這裡應該變為注意)經過上面的配置後,你會看到你的控制類繼承的是yii\rest\ActiveController,如果你進這個檔案後,你會看到下面這些方法:[php] view plain copy 在CODE上查看代碼片派生到My Code片    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‘,                  ],              ];          }                /**          * @inheritdoc          */          protected function verbs()          {              return [                  ‘index‘ => [‘GET‘, ‘HEAD‘],                       ‘view‘ => [‘GET‘, ‘HEAD‘],                        ‘create‘ => [‘POST‘],                  ‘update‘ => [‘PUT‘, ‘PATCH‘],                  ‘delete‘ => [‘DELETE‘],              ];          }  從上面的方法我們可以知道,如果在你使用yii架構內建的方法時,它預設有create, delete, update, index, view等的一下方法所建立的 API 包括:    GET /users: 逐頁列出所有使用者    POST /users: 建立一個新使用者    GET /users/123: 返回使用者 123 的詳細資料    PATCH /users/123 and PUT /users/123: 更新使用者123    DELETE /users/123: 刪除使用者123但是如果你要是不想用他的某些方法,我們可以通過下面的方法來自己覆蓋對應的方法例如:[php] view plain copy 在CODE上查看代碼片派生到My Code片    public function actions()      {          $actions = parent::actions();                // 登出系統內建的實現方法          unset($actions[‘index‘]);                    //unset($actions[‘create‘]);          //unset($actions[‘update‘]);          //unset($actions[‘delete‘]);              return $actions;      }            //覆蓋父類的actionIndex方法,並進行重寫      public function actionIndex()      {          //擷取使用者所有資訊          ......      }  對於其他的方法同上....於是我們就可以通過方法地址擷取想要的資料:GET  http://www.api.com/users

 

Yii2 使用 RESTful 寫API介面 執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.