1
Laravel(5.5)はwhoopページではなくjson形式で例外を返すようです。この厄介な動作を無効にし、whoopsまたはデフォルトのPHP例外フォーマットをどこで受け取ることができますか?JSON例外を防ぐ方法
Laravel(5.5)はwhoopページではなくjson形式で例外を返すようです。この厄介な動作を無効にし、whoopsまたはデフォルトのPHP例外フォーマットをどこで受け取ることができますか?JSON例外を防ぐ方法
JSONレスポンスを要求するリクエストを行うと、JSONレスポンスが返されます。次のヘッダーは、JSON応答をトリガー:
X-Requested-With: XMLHttpRequest
OR
X-PJAX: true
OR
Accept: */json or *+json
あなたはこの標準の動作をしたくない場合は、あなたがapp/Exceptions/Handler.php
であなたの例外ハンドラを上書きすることができます。
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if (method_exists($e, 'render') && $response = $e->render($request)) {
return Router::toResponse($request, $response);
} elseif ($e instanceof Responsable) {
return $e->toResponse($request);
}
$e = $this->prepareException($e);
if ($e instanceof HttpResponseException) {
return $e->getResponse();
} elseif ($e instanceof AuthenticationException) {
return $this->unauthenticated($request, $e);
} elseif ($e instanceof ValidationException) {
return $this->convertValidationExceptionToResponse($e, $request);
}
return $this->prepareResponse($request, $e);
}
それとも、あなたは返すしたいコンテンツの種類を決定するためにここに独自のロジックを追加
(これはvendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
から直接コピーされ、常にリクエストヘッダを無視しておっとを返す)これに
render
機能を変更します異なるヘッダーが与えられたとき。
存在しないページ(簡単なブラウザのGETリクエスト)にアクセスしてみてください。あなたはJSONで例外を取得しますか? .envに 'APP_DEBUG = true'があれば普通のWhoopsを取得するべきです。 JSONヘッダーを送信するときにJSONが返されると思います。 – devk
@devkはい、質問に記載されているようにjsonを取得します。現在は 'APP_DEBUG = true'です。 jsonヘッダーの定期的な例外を受け取る必要があります。これが問題です。 – PHPst