Php 防止在Laravel中无效后重定向到主页
我正在用Laravel5.3开发一个RESTfulAPI,所以我正在用我的控制器测试一些函数和请求。我需要做的一件事是在数据库中添加字段之前验证用户发送的请求,因此,我使用自定义FormRequest来验证它 当我在Postman中测试API并发送无效请求时,响应将我重定向到主页。阅读文档后,我发现以下语句 如果验证失败,将生成重定向响应以发送 用户返回到以前的位置。错误也将被刷新 添加到会话中,以便可以显示它们。如果请求是 一个AJAX请求,一个带有422状态码的HTTP响应 返回给用户,包括验证的JSON表示 错误Php 防止在Laravel中无效后重定向到主页,php,ajax,laravel,postman,Php,Ajax,Laravel,Postman,我正在用Laravel5.3开发一个RESTfulAPI,所以我正在用我的控制器测试一些函数和请求。我需要做的一件事是在数据库中添加字段之前验证用户发送的请求,因此,我使用自定义FormRequest来验证它 当我在Postman中测试API并发送无效请求时,响应将我重定向到主页。阅读文档后,我发现以下语句 如果验证失败,将生成重定向响应以发送 用户返回到以前的位置。错误也将被刷新 添加到会话中,以便可以显示它们。如果请求是 一个AJAX请求,一个带有422状态码的HTTP响应 返回给用户,包括
我怎样才能防止这种情况?或者邮递员中有AJAX模式?有什么建议吗?我解决了安装此软件包的问题:
这个包使AJAX请求成为我预期的API响应您的自定义FormRequest扩展了
Lightning\Foundation\Http\FormRequest
。其中有一个执行重定向的函数,名为response()
。只需在自定义FormRequest中重写此函数,即可更改无效验证的响应方式
这也可以在不重写任何函数的情况下实现。Laravel是为支持
Json
和普通页面而构建的。
请更改postman
中的设置,并将Accept
设置为application/json
,如下所示
拉威尔很聪明;-) 如果这个东西在laravel文档中有记录,你能分享一下这个链接吗?它真的很有用。如果请求不包含任何accept头,我们如何强制它也在apisWow中工作。这对我有用。从来没想过。这就是为什么拉维安全非常棒。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\JsonResponse;
class CustomFormRequest extends FormRequest
{
/**
* Custom Failed Response
*
* Overrides the Illuminate\Foundation\Http\FormRequest
* response function to stop it from auto redirecting
* and applies a API custom response format.
*
* @param array $errors
* @return JsonResponse
*/
public function response(array $errors) {
// Put whatever response you want here.
return new JsonResponse([
'status' => '422',
'errors' => $errors,
], 422);
}
}