验证错误处理 Laravel Sanctum Api in JSON
Validation Error Handing Laravel Sanctum Api in JSON
Laravel 通常使用下面的请求验证。
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users', 'required_without_all:phone'],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
'phone' => ['required', 'string', 'max:13', 'unique:users', 'required_without_all:email'],
]);
此方法仅添加 $error 变量,可以使用 blade 文件访问该变量,因为它仅在服务器上呈现。但是现在我使用的是 api Sanctum 它只是显示 404。我猜它只是重定向回请求并且 $error 是 session 可以通过 PHP 访问只有.
有解决办法
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:255'],
'email' => ['string', 'email', 'max:255', 'unique:users', 'required_without_all:phone'],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
'phone' => ['string', 'max:13', 'unique:users', 'required_without_all:email'],
]);
if ($validator->fails()) {
return response()->json($validator->errors());
}
那只是添加额外的行,我不希望每次都使用这一行。 有人可以帮我编辑验证功能,它只是 return 任何 $error as json only.
澄清答案
我是自我认证的菜鸟,让我用 fetch 让它变得像我的大脑可以理解的那样
let y = await fetch("http://127.0.0.1:8000/api/register", {
method: "POST", // or 'PUT'
headers: {
"Accept" : "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify(x),
}).then(response => response.json());
console.log(y);
我认为这是错误的方式,因为存在 {"Accept":application/json", "Content-Type": "application/json",} 并且接受很重要,不需要在 back-end.
中完成
你不需要自己处理。
只需确保您的请求发送正确 header:Accept: application/json
这 helps Laravel 知道您想要 json 响应而不是重定向(导致 404)。
Sample snippet
Laravel 通常使用下面的请求验证。
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users', 'required_without_all:phone'],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
'phone' => ['required', 'string', 'max:13', 'unique:users', 'required_without_all:email'],
]);
此方法仅添加 $error 变量,可以使用 blade 文件访问该变量,因为它仅在服务器上呈现。但是现在我使用的是 api Sanctum 它只是显示 404。我猜它只是重定向回请求并且 $error 是 session 可以通过 PHP 访问只有.
有解决办法
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:255'],
'email' => ['string', 'email', 'max:255', 'unique:users', 'required_without_all:phone'],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
'phone' => ['string', 'max:13', 'unique:users', 'required_without_all:email'],
]);
if ($validator->fails()) {
return response()->json($validator->errors());
}
那只是添加额外的行,我不希望每次都使用这一行。 有人可以帮我编辑验证功能,它只是 return 任何 $error as json only.
澄清答案
我是自我认证的菜鸟,让我用 fetch 让它变得像我的大脑可以理解的那样
let y = await fetch("http://127.0.0.1:8000/api/register", {
method: "POST", // or 'PUT'
headers: {
"Accept" : "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify(x),
}).then(response => response.json());
console.log(y);
我认为这是错误的方式,因为存在 {"Accept":application/json", "Content-Type": "application/json",} 并且接受很重要,不需要在 back-end.
中完成你不需要自己处理。
只需确保您的请求发送正确 header:Accept: application/json
这 helps Laravel 知道您想要 json 响应而不是重定向(导致 404)。