我有一个新的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调用?
答案 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);
});
}
}