0 follower

Enrutamiento

Con las clases de controlador y recurso preparadas, puedes acceder a los recursos usando una URL como http://localhost/index.php?r=user/create, parecida a la que usas con aplicaciones Web normales.

En la práctica, querrás usualmente usar URLs limpias y obtener ventajas de los verbos HTTP. Por ejemplo, una petición POST /users significaría acceder a la acción user/create. Esto puede realizarse fácilmente configurando el componente de la aplicación urlManager como sigue:

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

En comparación con la gestión de URL en las aplicaciones Web, lo principalmente nuevo de lo anterior es el uso de yii\rest\UrlRule para el enrutamiento de las peticiones con el API RESTful. Esta clase especial de regla URL creará un conjunto completo de reglas URL hijas para soportar el enrutamiento y creación de URL para el/los controlador/es especificados. Por ejemplo, el código anterior es equivalente a las siguientes reglas:

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

Y los siguientes puntos finales del API son mantenidos por esta regla:

  • GET /users: lista de todos los usuarios página a página;
  • HEAD /users: muestra ĺa información resumen del usuario listado;
  • POST /users: crea un nuevo usuario;
  • GET /users/123: devuelve los detalles del usuario 123;
  • HEAD /users/123: muestra la información resumen del usuario 123;
  • PATCH /users/123 y PUT /users/123: actualizan al usuario 123;
  • DELETE /users/123: borra el usuario 123;
  • OPTIONS /users: muestra los verbos soportados de acuerdo al punto final /users;
  • OPTIONS /users/123: muestra los verbos soportados de acuerdo al punto final /users/123.

Puedes configurar las opciones only y except para explícitamente listar cuáles acciones soportar o cuáles deshabilitar, respectivamente. Por ejemplo,

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

También puedes configurar las propiedades patterns o extraPatterns para redefinir patrones existentes o añadir nuevos soportados por esta regla. Por ejemplo, para soportar una nueva acción search para el punto final GET /users/search, configura la opción extraPatterns como sigue,

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

Puedes haber notado que el ID del controlador user aparece en formato plural users en los puntos finales de las URLs. Esto se debe a que yii\rest\UrlRule automáticamente pluraliza los IDs de los controladores al crear reglas URL hijas. Puedes desactivar este comportamiento definiendo la propiedad yii\rest\UrlRule::$pluralize como false.

Información: La pluralización de los IDs de los controladores es realizada por yii\helpers\Inflector::pluralize(). Este método respeta reglas especiales de pluralización. Por ejemplo, la palabra box (caja) será pluralizada como boxes en vez de boxs.

En caso de que la pluralización automática no encaje en tus requerimientos, puedes además configurar la propiedad yii\rest\UrlRule::$controller para especificar explícitamente cómo mapear un nombre utilizado en un punto final URL a un ID de controlador. Por ejemplo, el siguiente código mapea el nombre u al ID del controlador user.

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

Found a typo or you think this page needs improvement?
Edit it on github !