1

我正在使用 Laravel 5.5。有以下班

供应商\laravel\framework\src\Illuminate\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');
}

当我尝试使用 Laravel 5.5 在上述方法中返回 JSON 时,它说

不能抛出未实现 Throwable 的对象

现在可以确定,我如何在 Laravel 5.5 中为上述方法返回 JSON

4

1 回答 1

1

好吧,你现在不能再这样了。您需要返回异常类。但是您可以做的是返回一些自定义异常类,然后app/Exceptions/Handler.php在 `render 方法中添加:

if ($e instanceof YourCustomException) {
   return response()->json('429 Too many requests');
}

当然,如果您真的需要,您可以添加自己的handle方法实现,而不是抛出异常,您可以直接在其中返回响应,但可能抛出自定义异常并在 Handler 类中处理它是更好的选择。

于 2017-09-27T16:52:38.113 回答