ajax调用后,Laravel验证重定向

时间:2016-11-25 12:56:08

标签: php laravel api laravel-5

我有一个新的5.3安装,并希望与邮递员进行api通话。我也尝试用angular2来确保它不是邮递员的问题。

在我的routes/api.php我找到了一条简单的路线:

Route::post('test', function(\App\Http\Requests\LoginRequest $request) {
    return $request->all();
});

LoginRequest正在检查字段是否有电子邮件和密码。如果是,则输出为例外。但是当它丢失时会重定向到/

我是否必须为ajax调用添加一些表单验证信息?我认为当有ajax调用时,laravel会返回一个json错误对象。

更新

我发现我错过了Postman中的Accept application/json标题。有了它它的工作finde。但有没有办法说所有api/*调用都应该被视为json调用?

2 个答案:

答案 0 :(得分:1)

我为我的请求创建了一个新的父类。它检查路由是否属于api组。我试图在组中添加一个中间件来添加标题,但这个技巧失败了。

class JsonRequest extends FormRequest
{
    public function expectsJson()
    {
        return ($this->route()->getAction()['middleware'] == 'api');
    }
}

答案 1 :(得分:0)

您可以像这样回复ajax调用

 return response()->json(array('error' => $validator->getMessageBag()->toArray()), 400);

响应状态400表示错误,您将收到错误部分

error: function(jqXHR, textStatus, errorThrown){       
  var errResponse = JSON.parse(jqXHR.responseText);
  if (errResponse.error) {
    $.each(errResponse.error, function(index, value)
    {   
       console.log(value);
    });
  }
}