我正在尝试抽象我的所有错误响应以匹配我的API文档,以便使用Lumen和Dingo API包开发一个优秀,实用的API:
JSON错误正文应该为开发人员提供一些东西 - 一个有用的错误消息,一个独特的错误代码(可以在文档中查找更多详细信息)以及可能的详细描述。这样的JSON输出表示如下所示:
{
"code" : 1234,
"message" : "Something bad happened :(",
"description" : "More details about the error here"
}
目前,Dingo API仅向我提供以下响应:
{
"message": "Could not create new user.",
"status_code": 422
}
1。如何在所有错误响应中添加额外的字段,例如" description"和"代码"
configuration page显示了在bootstrap / app.php文件中设置的错误格式,但我想知道如何添加可能的新标记并使用它们。
我知道可以使用自定义异常并返回新的响应:
app('Dingo\Api\Exception\Handler')->register(function (\App\Exceptions\ValidationException $exception) {
return Response::make(['code' => $exception->getCode(), 'message' => $exception->getMessage()], 401);
});
我想知道这是否是这样做的最佳做法,但是在所有例外情况下(包括Dingo / Symfony的默认例外),例如使用配置参数: - &gt; setErrorFormat([]); < / p>
2。更改验证错误格式
PUT,PATCH和POST请求的验证错误需要字段细分。最好使用固定的顶级错误代码进行验证失败,并在其他错误字段中提供详细错误,如下所示:
{
"code" : 1024,
"message" : "Validation Failed",
"errors" : [
{
"code" : 5432,
"field" : "first_name",
"message" : "First name cannot have fancy characters"
},
{
"code" : 5622,
"field" : "password",
"message" : "Password cannot be blank"
}
]
}
目前,Dingo API以下列格式为我提供了JSON:
{
"message": "Could not create new user.",
"status_code": 422,
"errors": {
"username": [
"The username field is required."
],
"password": [
"The password field is required."
]
}
}