В проекте создан модуль api, который предполагает rest архитектуру. Хотелось бы, чтобы при переходе по ссылке `
http://site.ru/api/любой набор символов` 404, да и вообще любые ошибки показывались в json формате. А при переходе на `
http://site.ru/не api` - в обычном html. Полагаю, здесь urlManager должен быть как-то задействован. Как такое сделать без костылей? Я пока прописал в urlManager в самом конце после всех правил
[
'api/<all:\w+>' => 'api/default/error',
'api/<module>/<all:\w+>' => 'api/default/error',
]
Так вроде работает, но может есть более красивый спопоб?
Обновление
Решено следующим способом. Прописал в bootstrap модуля:
if (preg_match('/^\/api\//', Yii::$app->request->url) !== 0) {
Yii::$app->response->format = Response::FORMAT_JSON;
Yii::$app->response->on(Response::EVENT_BEFORE_SEND, function($event) {
/** @var Response $response */
$response = $event->sender;
if (isset($response->data['type']) && $response->statusCode !== 200) {
unset($response->data['type']);
}
});
}