laravel - 在 laravel 中使用错误的 ttp 请求类型(例如 get 而不是 post)时返回 404
问题描述
我正在开发一个休息 API,有时前端调用一个带有错误 HTTP 请求类型的端点。例如,我有一条路线 ( /users/unassigned
),路线的类型是“GET”。想象一下我的前端使用“POST”请求调用此路由。发生以下错误。
The POST method is not supported for this route. Supported methods: GET, HEAD, PUT, DELETE.
我想要的是 API 在这些情况下响应 JSON,我可以处理异常。
我已经使用了Route::fallback
但是这个方法捕获了路由的每一个异常。我需要一个只处理被告知问题的函数。
解决方案
一种方法是处理它app/Exceptions/Handler.php
:
public function render($request, Exception $e)
{
if ($request->ajax() || $request->wantsJson()) {
return response()->json([
'error' => $e->getMessage(),
], 400);
}
return parent::render($request, $e);
}
当请求由 ajax 或请求期望 json 发出时,这会将所有异常的错误消息输出为 json。
您还可以添加对异常类型的检查,如下所示:
if ($exception instanceof MethodNotAllowedHttpException) {
// Code...
}
推荐阅读
- powershell - 使用 powershell 在 Windows 10 中将虚拟目录添加到 IIS 站点
- vue.js - v-select vuetify 最大元素数
- python - 使用 h5py 模块将 Python 列表写入 HDF5 文件
- c# - 我如何处理这个 webapi 项目错误?
- css - 使用 nuxt js 从插件文件中所需的节点模块导入 css
- java - 无缘无故得到 NullPointerException
- xcode - 导出时的 Xcode Catalyst 字体问题
- node.js - 如何在异步函数(aws lambda)中从 dynamodb 读取项目?
- python - 当我尝试使用 np.expand_dim()
- git - 如何使用提交的 http 链接将 gerrit 提交/补丁拉/樱桃选择到分支?