路由(Routing)

2018-02-24 15:40 更新

路由

隨著資源和控制器類準備,您可以使用URL如?http://localhost/index.php?r=user/create訪問資源,類似于你可以用正常的Web應(yīng)用程序做法。

在實踐中,你通常要用美觀的URL并采取有優(yōu)勢的HTTP動詞。 例如,請求POST /users意味著訪問user/create動作。 這可以很容易地通過配置urlManager應(yīng)用程序組件來完成 如下所示:

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
    ],
]

相比于URL管理的Web應(yīng)用程序,上述主要的新東西是通過RESTful API 請求yii\rest\UrlRule。這個特殊的URL規(guī)則類將會 建立一整套子URL規(guī)則來支持路由和URL創(chuàng)建的指定的控制器。 例如, 上面的代碼中是大致按照下面的規(guī)則:

[
    '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',
]

該規(guī)則支持下面的API末端:

  • GET /users: 逐頁列出所有用戶;
  • HEAD /users: 顯示用戶列表的概要信息;
  • POST /users: 創(chuàng)建一個新用戶;
  • GET /users/123: 返回用戶為123的詳細信息;
  • HEAD /users/123: 顯示用戶 123 的概述信息;
  • PATCH /users/123?and?PUT /users/123: 更新用戶123;
  • DELETE /users/123: 刪除用戶123;
  • OPTIONS /users: 顯示關(guān)于末端?/users?支持的動詞;
  • OPTIONS /users/123: 顯示有關(guān)末端?/users/123?支持的動詞。

您可以通過配置?only?和?except?選項來明確列出哪些行為支持, 哪些行為禁用。例如,

[
    'class' => 'yii\rest\UrlRule',
    'controller' => 'user',
    'except' => ['delete', 'create', 'update'],
],

您也可以通過配置?patterns?或?extraPatterns?重新定義現(xiàn)有的模式或添加此規(guī)則支持的新模式。 例如,通過末端?GET /users/search?可以支持新行為?search, 按照如下配置?extraPatterns?選項,

[
    'class' => 'yii\rest\UrlRule',
    'controller' => 'user',
    'extraPatterns' => [
        'GET search' => 'search',
    ],

您可能已經(jīng)注意到控制器IDuser以復(fù)數(shù)形式出現(xiàn)在users末端。 這是因為 yii\rest\UrlRule 能夠為他們使用的末端全自動復(fù)數(shù)化控制器ID。 您可以通過設(shè)置 yii\rest\UrlRule::pluralize 為false 來禁用此行為,如果您想 使用一些特殊的名字您可以通過配置 yii\rest\UrlRule::controller 屬性。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號