Иногда может потребоваться настроить Формат ответа об ошибке по умолчанию. Например, нам нужно знать метку времени ответа и успешность ответа. Фреймворки предоставляют простой способ сделать это.
Повторите все шаги из создания рецепта сервера REST в разделе Подготовка и Как это сделать....
Для достижения этой цели можно ответить на событие beforeSend компонента response в @app/config/web.php, следующим образом:
' response' => [
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
$response = $event->sender;
if ($response->data !== null) {
$response->data = [
'success' => $response->isSuccessful,
'timestamp' => time(),
'path' => Yii::$app->request->getPathInfo(),
'data' => $response->data,
];
}
},
],
Чтобы узнать, что происходит в этом коде, давайте поиграем с ним. Сначала запустите это в консоли:
curl -i "https://yii-book.app/films/1"
Вы получите следующий вывод:
HTTP/1.1 200 OK
Date: Thu, 24 Sep 2015 04:24:52 GMT
Server: Apache
X-Powered-By: PHP/5.5.23
Content-Length: 115
Content-Type: application/json; charset=UTF-8
{"success":true, "timestamp":1443068692, "path":"films/1", "data":
{"id":1,"title":"Interstellar","release_year":2014}}
Во-вторых, запустите это в консоли:
curl -i "https://yii-book.app/films/1000"
И вы получите следующее:
HTTP/1.1 404 Not Found
Date: Thu, 24 Sep 2015 04:24:26 GMT
Server: Apache
X-Powered-By: PHP/5.5.23
Content-Length: 186
Content-Type: application/json; charset=UTF-8
{"success"false, "timestamp":1443068666, "path":"films/1000","data":{"name":"Not
Found","message":"Object not found:
1000","code":0,"status":404,"type":"yii\\web\\NotFoundHttpException"}}
Мы изменили содержимое ответа перед отправкой. Таким образом, легко определить, является ли ответ успешным или нет.
Для получения дополнительной информации обратитесь к https://www.yiiframework.com/doc-2.0/guide-rest-error-handling.html. По русски https://yiiframework.domain-na.me/doc/guide/2.0/ru/rest-error-handling