Коде с Yii2 API-интерфейс REST дополнительных моделей с несколькими контроллерами
У меня есть 2 контроллера в моем API. Каждый из них имеет определенные дополнительные паттерны. Все мои действия работают правильно, за исключением входа пользователя, который определяется в дополнительных шаблонах.
<?
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yiirestUrlRule',
'controller' => [ 'v1/item', 'v1/user'],
'tokens' => [
'{id}' => '<id:\w+>', //commenting out this token allows login to return
'{type}'=>'<type:\w+>'
],
'extraPatterns' => [
'POST {id}/image/{type}' => 'image', //from the item controller
'GET login' => 'login' // from the USER controller
]
]
],
],
Ошибки пользователя / входа в систему как таковые. Обратите внимание, что он ищет действие v1 / user / view
{
"name": "Not Found",
"message": "Page not found.",
"code": 0,
"status": 404,
"type": "yii\web\NotFoundHttpException",
"previous": {
"name": "Invalid Route",
"message": "Unable to resolve the request: v1/user/view",
"code": 0,
"type": "yii\base\InvalidRouteException"
}
}
Если я закомментирую маркер ID в urlManager, действие user / login работает, но мои другие маршруты терпят неудачу.
2 ответа:
Решается путем разделения правил на элементы для каждого контроллера:
[ 'class' => 'yii\rest\UrlRule', 'controller' => 'v1/config', //, 'tokens' => [ '{id}' => '<id:\\w+>', '{type}'=>'<type:\\w+>' ], 'extraPatterns' => [ 'POST {id}/image/{type}' => 'image', ] ], [ 'class' => 'yii\rest\UrlRule', 'controller' => 'v1/user', 'extraPatterns' => [ 'GET login' => 'login' ], ]