Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

3.8 KiB

Roteamento

Com as classes de recurso e controller prontas, você pode acessar os recursos utilizando uma URL como http://localhost/index.php?r=user/create, semelhante ao que você pode fazer com aplicações Web normais.

Na prática, você geralmente deseja utilizar URLs amigáveis e tirar proveito dos métodos HTTP. Por exemplo, uma requisição POST /users seria o mesmo que a ação user/create. Isto pode ser feito facilmente através da configuração do urlManager application component na configuração da aplicação conforme mostrado abaixo:

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

Em comparação com o gerenciamento de URL para aplicações web, a principal novidade acima é o uso de yii\rest\UrlRule para rotear requisições API RESTful API. Esta classe especial regra de URL irá criar um conjunto de regras de URL filhas para dar suporte ao roteamento e a criação de URL para o controller especificado. Por exemplo, o código acima é mais ou menos equivalente às seguintes regras:

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

E os seguintes terminais de API são suportados por esta regra:

  • GET /users: lista todos os usuários página por página;
  • HEAD /users: mostrar a informações gerais da listagem de usuários;
  • POST /users: cria um novo usuário;
  • GET /users/123: retorna detalhes do usuário 123;
  • HEAD /users/123: mostrar a informações gerais do usuário 123;
  • PATCH /users/123 and PUT /users/123: atualiza o usuário 123;
  • DELETE /users/123: deleta o usuário 123;
  • OPTIONS /users: mostrar os metodos suportados pelo terminal /users;
  • OPTIONS /users/123: mostrar os metodos suportados pelo terminal /users/123.

Você pode configurar as opções only e except para listar explicitamente que ações são suportadas ou quais ações devem ser desativada, respectivamente. Por exemplo,

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

Você também pode configurar patterns ou extraPatterns para redefinir padrões existentes ou adicionar novos padrões suportados por esta regra. Por exemplo, para acessar a uma nova ação search pelo terminal GET /users/search, configure a opção extraPatterns como a seguir,

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

Você deve ter notado que o controller ID user aparece no plural como users na extremidade das URLs. Isto acontece porque yii\rest\UrlRule pluraliza os controller IDs automaticamente na criação de regras de Urls filhas. Você pode desabilitar este comportamento configurando yii\rest\UrlRule::pluralize para falso.

Observação: A pluralização dos controller IDs é feita por yii\helpers\Inflector::pluralize(). O método respeita as regras especiais de pluralização. Por exemplo, a palavra box será pluralizada coo boxes em vez de boxs.

Caso a pluralização automática não encontre uma opção para a palavra requerida, você pode configurar a propriedade yii\rest\UrlRule::controller para especificar explicitamente como mapear um nome para ser usado como terminal da URL para um controller ID. Por exemplo, o seguinte código mapeia o nome u para o controller ID user.

[
   'class' => 'yii\rest\UrlRule',
   'controller' => ['u' => 'user'],
]