Невозможно выбросить объекты, которые не поддерживают Throwable.
Я использую Laravel 5.5. Есть следующий класс
поставщик \ Laravel \ рамки \ SRC \ Осветите \ Routing \ Middleware \ ThrottleRequests.php
с именем метода: buildException
В Laravel 5.4 я смог вернуть JSON в этом методе, как показано ниже.
protected function buildException($key, $maxAttempts)
{
$retryAfter = $this->getTimeUntilNextRetry($key);
$headers = $this->getHeaders(
$maxAttempts,
$this->calculateRemainingAttempts($key, $maxAttempts, $retryAfter),
$retryAfter
);
return response()->json('429 Too many requests');
}
Когда я пытаюсь вернуть JSON вышеупомянутым методом, используя Laravel 5.5, он говорит
Невозможно выбросить объекты, которые не поддерживают Throwable.
Теперь уверен, как я могу вернуть JSON в Laravel 5.5 для вышеуказанного метода
1 ответ
Ну, ты больше не можешь так больше делать. Вам нужно вернуть класс исключения. Но то, что вы можете сделать, это вернуть некоторый пользовательский класс исключений, а затем в app/Exceptions/Handler.php
в методе `render вы можете добавить:
if ($e instanceof YourCustomException) {
return response()->json('429 Too many requests');
}
Конечно, если вам действительно нужно, вы можете добавить свою собственную реализацию handle
метод, и вместо того, чтобы генерировать исключение, вы можете вернуть ответ прямо туда, но, вероятно, выбрасываете пользовательское исключение и обрабатываете его в классе Handler.