php Laravel 5.7控制器不会返回定义的状态码

时间:2018-12-01 04:21:16

标签: php laravel laravel-5 response laravel-validation

我遇到了一个重大问题。我已经开发了一段时间的应用程序。我已经设置了一些响应以发送422响应错误代码,该代码本来可以正常工作,但是最近我再次测试了这些模块,现在这些响应仅发送200状态。我尝试设置不同的状态代码,它总是发送200个状态代码。我使用了request-> validate来验证文件类型,这在错误情况下还会发送200状态代码。我用我的GIT提交检查了我的当前状态,但找不到任何实例来显示阻止此更改的实例。非常感谢您对此提供的帮助。我离我们太远了,无法恢复到工作状态。

我的代码应该发送一个不同的状态代码,而不是200

$validated = $request->validate(['inputFile' => 'required|mimes:xlsx,xls']);
    if($validated){
        $exists = DB::table($this->tables['tblperiod'][0])->where([[ $this->tables[ 'tblperiod'][1][1], $request->month ],[ $this->tables['tblperiod'][1][2], $request->year ]])->exists();
        if(!$exists){
            $this->doExcel($request);
            $uploadData = $this->getRecentUpload($this->tables['tblallocation'][0], $this->tables['tblallocation'][1], $this->tables['tblperiod'][0], $this->tables['tblperiod'][1], $request->month, $request->year);
            return response()->json(['success' => 'Data set of '. $request->month .' '. $request->year .' has been successfully imported and ready for reports.', 'upload' => $uploadData, 'month' => $request->month, 'year' => $request->year]);
        }else{
            return response()->json(['errors' => 'The data set ('. $request->month .' '. $request->year .') you are trying to upload already exists! Please check the period and try again.'], 422);
        }
    }

1 个答案:

答案 0 :(得分:1)

这不是一个完整的答案,只是一些可能有价值的线索。

response()->json()的文档可以在here中找到。似乎那里没有近期更改。

您可以在新项目中复制422吗?将下面的代码放在web.php中确实会给我422(以及错误)

Route::get('/test', function (Request $request) {
    return response()->json(['errors' => 'Some error'], 422);
});

那应该是您使用的相同语法吗?

另一件事可能是:在打开<?php标记之前空行导致错误的状态代码(始终为200)