如何更改 ParamFetcher 给出的错误信息?
How to change an error message given by ParamFetcher?
使用 ParamFetcher 进行验证非常优雅,但错误消息并不漂亮。它包含许多我不想向 api 用户显示的不必要信息。
例如:
"Query parameter parent_id value 'a' violated a constraint (Query
parameter value 'a', does not match requirements '\d+')"
我想将此消息转换为更简单的消息,例如:"parent_id must be an integer"
我该怎么做?
报错代码如下。而且我看不出有什么方法可以提供其他错误消息。
也许还有另一种验证查询参数的方法。
$constraint = new Regex(array(
'pattern' => '#^'.$config->requirements.'$#xsu',
'message' => sprintf(
"%s parameter value '%s', does not match requirements '%s'",
$paramType,
$param,
$config->requirements
),
));
源代码:https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Request/ParamFetcher.php#L220
我向 FOSRestBundle 发出了拉取请求来解决这个问题https://github.com/FriendsOfSymfony/FOSRestBundle/pull/1015
您可以如下图使用
@QueryParam(name="parent_id", requirements={"rule" = "\d+", "error_message" = "parent_id must be an integer"}, strict=true, nullable=true, description="Parent Id")
错误信息:
{
"code": 400,
"message": "parent_id must be an integer"
}
使用 ParamFetcher 进行验证非常优雅,但错误消息并不漂亮。它包含许多我不想向 api 用户显示的不必要信息。
例如:
"Query parameter parent_id value 'a' violated a constraint (Query parameter value 'a', does not match requirements '\d+')"
我想将此消息转换为更简单的消息,例如:"parent_id must be an integer"
我该怎么做?
报错代码如下。而且我看不出有什么方法可以提供其他错误消息。
也许还有另一种验证查询参数的方法。
$constraint = new Regex(array(
'pattern' => '#^'.$config->requirements.'$#xsu',
'message' => sprintf(
"%s parameter value '%s', does not match requirements '%s'",
$paramType,
$param,
$config->requirements
),
));
源代码:https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Request/ParamFetcher.php#L220
我向 FOSRestBundle 发出了拉取请求来解决这个问题https://github.com/FriendsOfSymfony/FOSRestBundle/pull/1015
您可以如下图使用
@QueryParam(name="parent_id", requirements={"rule" = "\d+", "error_message" = "parent_id must be an integer"}, strict=true, nullable=true, description="Parent Id")
错误信息:
{
"code": 400,
"message": "parent_id must be an integer"
}