我没有使用 axios 恢复错误



我没有得到错误,即使我已经使用验证()方法使用axios

这是我的控制器

public function store(Request $request)
{
$fields = $request->validate([
'product_name' => 'required',
'product_cost' => 'required | integer',
'product_selling' => 'required | integer',
'product_stock' => 'required | integer',
]);
Product::create([
'name' => $fields['product_name'],
'cost' => $fields['product_cost'],
'selling' => $fields['product_selling'],
'stock' => $fields['product_stock'],
]); }

这是我的Vue文件

const productState = reactive({
product_name: "",
product_cost: "",
product_markup: "",
markup_type: "Markup by price",
product_selling: "",
product_stock: "",
returned_errors: [],
});
axios .post("api/products", productState)
.then((response) => {
console.log(response);
})
.catch((error) => console.log(error.response.data.errors));

即使有错误,它仍然返回响应。

try {
$fields = $request->validate([
'product_name' => 'required',
'product_cost' => 'required | integer',
'product_selling' => 'required | integer',
'product_stock' => 'required | integer',]);
} catch (ValidationException $ex) {
return response()->json(['errors' =>$ex->errors()], 422); //what ever error format that you desire
}

如果您正在发送API请求,您应该try catch$request->validate并发送自定义响应。

但我不建议使用$request->validateAPI请求,你可以去表单请求或Validator::make()为API请求提供更大的灵活性,你也可以在Handler.php文件中捕获验证异常,并在那里处理它。

已经有很多文章发表了,所以尝试研究"API请求的larlevel验证"。(我不打算链接到具体的文章,你可以在Youtube视频中找到中等文章到博客文章)

它将帮助你从整体上理解Laravel的验证过程。

你试过了吗:

error.response.data.error

或者只是记录错误,看看结构是什么

Axios返回的错误并不总是具有error.response属性。您可能应该在Axios文档中按照这个示例构建错误处理。

希望对你有帮助。

最新更新