Return JSON Laravel 8 验证失败的详细信息
Return JSON details of failed validation with Laravel 8
我正在创建一个端点来存储具有两个字段的 Office:名称、地址。
当验证失败时 laravel returns 状态 200 和欢迎页面。它应该 return 4xx 和 JSON 的错误详细信息,不是吗?我试图捕获异常 (ValidationError) 但我没有得到错误详细信息。
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'address' => 'required'
]);
// if validation failed, 4xx?
// logic to create a model here
return $office; // everything fine, 201 and object details
}
我正在使用单元测试和邮递员对其进行测试:
public function testValidationFailed()
{
$payload = [
"wrongfield" => "Example Name"
];
$response = $this->postJson('/api/offices/', $payload);
对于邮递员 content-type 是 application/json
已编辑
邮递员弄乱了 headers。 httpie 和 curl 使用此代码和接受的答案得到正确的响应。
您可以像这样使用Validator
$validator = Validator::make($request->all(), [
'name' => 'required',
'address' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 404);
}
或者您可以使用 validator()
辅助方法
validator($request->all(), [
'name' => 'required',
'address' => 'required'
])->validate();
这将自动验证并返回错误,它也适用于网络和 api 端点。
我正在创建一个端点来存储具有两个字段的 Office:名称、地址。 当验证失败时 laravel returns 状态 200 和欢迎页面。它应该 return 4xx 和 JSON 的错误详细信息,不是吗?我试图捕获异常 (ValidationError) 但我没有得到错误详细信息。
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'address' => 'required'
]);
// if validation failed, 4xx?
// logic to create a model here
return $office; // everything fine, 201 and object details
}
我正在使用单元测试和邮递员对其进行测试:
public function testValidationFailed()
{
$payload = [
"wrongfield" => "Example Name"
];
$response = $this->postJson('/api/offices/', $payload);
对于邮递员 content-type 是 application/json
已编辑 邮递员弄乱了 headers。 httpie 和 curl 使用此代码和接受的答案得到正确的响应。
您可以像这样使用Validator
$validator = Validator::make($request->all(), [
'name' => 'required',
'address' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 404);
}
或者您可以使用 validator()
辅助方法
validator($request->all(), [
'name' => 'required',
'address' => 'required'
])->validate();
这将自动验证并返回错误,它也适用于网络和 api 端点。