【问题标题】:Laravel api route validation not validatingLaravel api路由验证未验证
【发布时间】:2018-01-18 23:31:34
【问题描述】:

我确实从 Lumen 搬到了 Laravel,现在我的项目正在转换。除验证外,一切正常。出于某种原因,如果我尝试验证,它只会重定向到 welcome.blade.php 视图。这是什么原因造成的?

我只使用路由的 API 部分,而不是视图。 我不是处理视图。我正在使用 Laravel 的无状态部分。

根据文档,我可以这样验证:

$this->validate($request, [
        'title' => 'required|unique|max:255',
        'body' => 'required',
]);

如果验证通过,您的代码将继续正常执行。然而, 如果验证失败,则 Illuminate\Contracts\Validation\ValidationException 将被抛出。

我也尝试强制它返回 JSON 响应但没有成功:

$validator = $this->validate($request, ['email' => 'required']);

         if ($validator->fails()) {
            $messages = $validator->errors();
            return new JsonResponse(['status' => 'error', 'messages' => $messages]);
         }

但是,我的并没有失败,只是返回了响应代码为 200 的欢迎视图。我已经尝试了文档和谷歌中几乎所有可能的验证方法。他们都没有工作。

我什至尝试使用干净的 laravel 安装,声明了一条测试路线和测试控制器,它已经过验证,结果完全相同。

验证是否意味着与 Laravel 的静止/无状态部分兼容?

非常感谢任何建议。

【问题讨论】:

  • 你能把你的代码贴在这里吗?所以我们可以调试它

标签: php laravel laravel-validation


【解决方案1】:

1- 首先唯一键需要一个表,例如,如果您希望电子邮件在用户表中是唯一的,您可以执行以下操作:

'email' => 'required|unique:users',

【讨论】:

  • 正如我在问题中提到的 - 我不是在处理意见。我正在使用 Laravel 的无状态形式。
  • 啊哈,响应包含什么?
【解决方案2】:

我想可能是你把你的路线放在了 route/web.php 文件中。将该代码从 web.php 替换为 api.php

尝试将您的 API 端点放在 route/api.php 文件中。

请记住,您需要在路由中添加前缀 /api。

例如:test.com/api/users。

【讨论】:

  • 我已经从 RouteServiceProvider.php 中删除了前缀,因为我的 api 是子域。我的路线停留在 routes/api.php 中。我知道区别。
  • 你有没有尝试使用 route/api.php 文件??
  • 这就是我正在使用的。
  • $this->validate($request, [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 2014-08-21
相关资源
最近更新 更多