英文:
Laravel: How to send custom error messages to client from API?
问题
我有一个Laravel API,向客户端返回JSON响应。默认情况下,Laravel以标准格式发送错误消息,例如422 Unprocessable Entity
。然而,我想以特定格式向客户端发送自定义错误消息,例如:
{
"status": "error",
"message": "Invalid email address"
}
我尝试使用abort函数并自定义状态码和消息,但这不会以所示格式发送响应。如何以上面显示的格式向客户端发送自定义错误消息?
英文:
I have a Laravel API that returns JSON responses to the client. By default, Laravel sends error messages in a standard format, such as 422 Unprocessable Entity
. However, I want to send custom error messages to the client in a specific format, for example:
{
"status": "error",
"message": "Invalid email address"
}
I have tried using the abort function with a custom status code and message, but this does not send the response in the desired format. How can I send custom error messages to the client in the format shown above?
答案1
得分: 3
Many possible solutions for you. Have a look at this discussion for example.
您有许多可能的解决方案。例如,可以参考此处的讨论。
You can create your own validators, or just extend on the existing ones built in Laravel. Also, it's very possible to return whatever else you need with for example:
您可以创建自己的验证器,或者只是扩展Laravel中已有的验证器。此外,您也可以很容易地返回您需要的任何其他内容,例如:
return response()->json(['status' => 'error', 'message' => 'Your message here'], 422);
但如果您需要它进行验证,我建议按照先前提到的步骤,因为它们遵循更标准化的“良好实践”方法。
但如果您需要它进行验证,我建议按照先前提到的步骤,因为它们遵循更标准化的“良好实践”方法。
Also, when sending the request, make sure you set the following header:
另外,在发送请求时,请确保设置以下标头:
Accept: application/json
You can also "force" that header using a middleware in Laravel if needed. Link here
如果需要的话,您还可以使用Laravel中的中间件“强制”该标头。链接在此处。
英文:
Many possible solutions for you. Have a look at this discussion for example.
You can create your own validators, or just extend on the existing ones built in Laravel. Also, it's very possible to return whatever else you need with for example:
return response()->json(['status' => 'error', 'message' => 'Your message here'], 422);
But if you need it for validation, I would recommend other previously mentioned steps as they follow a more standardized "good practice" approach.
Also, when sending the request, make sure you set the following header:
Accept:application/json
You can also "force" that header using a middleware in Laravel if needed. Link here
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论