当前位置:  开发笔记 > 编程语言 > 正文

API - 在Laravel中验证请求

如何解决《API-在Laravel中验证请求》经验,为你挑选了1个好方法。

我正在创建一个简单的API,用于从移动应用上传文件.

在我的routes/api.php文件中,我定义了一条路线:

Route::post("/file", 'UploadController@upload');

然后在我的控制器中验证请求:

public function upload(Request $request){

    $this->validate($request, [
            'name' => 'required',
            'file' => 'file',
            'type' => 'required|in:sign,photo',
        ]);

     // do something here....

}

当请求正确时(它通过验证)一切正常,Laravel返回JSON响应.

但是如果请求没有通过验证,即name字段丢失,Laravel将返回302页面并尝试将我重定向到登录页面.

如果验证失败,如何使用JSON消息返回正确的40X/50X错误,而不是302重定向页面?

我正在使用Laravel 5.3和Insomnia来测试API调用.



1> Jeremy Harri..:

validate方法返回正常请求的重定向,以及AJAX请求的JSON.

validate方法接受传入的HTTP请求和一组验证规则.如果验证规则通过,您的代码将继续正常执行; 但是,如果验证失败,将抛出异常并将自动将正确的错误响应发送回用户.在传统HTTP请求的情况下,将生成重定向响应,同时将为AJAX请求发送JSON响应.

所以你有几个选择,这里有几个:

您可以设置X-Requested-With标头,以便Laravel认为它是一个AJAX请求

您可以创建验证器并对其进行调用fails(),并按照您希望的方式处理您的响应:


$validator = Validator::make($input, $rules);
if ($validator->fails()) {
    // Custom Response
}

如果您只是制作API,则可能需要考虑使用流明,因为它针对特定目的进行了更精细的调整.此外,它的验证默认为返回JSON响应.


谢谢,X-Requested-With做了伎俩.但是,由Insomnia提出的请求没有被正确识别为AJAX请求,这有点奇怪.
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有