如何控制 laravel 8 中的 405 响应和无令牌访问前失眠的护照

how to control 405 response in laravel 8 and passport without token access front insomnia

我正在 laravel 8 中构建一个 API(我在这个框架中的第一个 api),护照为 10,用于通过令牌访问,以咨询和测试 API我使用 Insomnia,在失眠中我使用 URL 和“token”的两个变量“base”来处理工作环境。

当我测试来自 Insomnia 的 API 路由并传递令牌时,它没有给我带来问题,当我在 Insomnia 中删除环境变量令牌时,错误开始,laravel API 崩溃并出现 405 错误(方法不允许)。

我的问题是如何控制 laravel 以便当用户不发送令牌时我的应用程序不会崩溃?

我坚持,这只有当我在 Insomnia 中删除 Token 环境变量时才会发生。

谢谢

首先,我想确定您发送的是 AcceptContent-Type

Accept: application/json
Content-Type: application/json

其次,MethodNotAllowedException 表示您使用不同的 HTTP 动词调用路由,您可以看到支持的方法是 POST 而您正在使用 GET.

第三,为了捕获 MethodNotAllowedException,您可以在 report 方法

中添加位于 app\Exceptions\HandlerHandler.php
public function render($request, Throwable $e)
{
   if ($request->ajax() && $e instanceof MethodNotAllowedException) {
       return response()->json([
           "Please enter your token"
       ], 405);
   }
        
   return parent::render($request, $e);
}