FOSRestBundle Queryparam return 未通过时的值
FOSRestBundle Queryparam return value if not passed
我有一个控制器,其中包含许多方法,我向这些方法传递 get 参数。我希望收到一些数据作为响应(取决于我传递的参数)。我正在尝试使用 symphony 的 @QueryParam 来验证传入值,因为其中一些是必需的。
可能传递了多个参数,但第一个参数 sponsorId 是必需的,如果未传递,我想 return 类似 'ERROR: id is not set'
目前我没有使用@QueryParam,我使用的是这样的:
public function getSponsorById(Request $request)
{
if(!$args['sponsorId']) {
return 'ERROR: id is not set';
}
.....
$sponsor = .....
return $sponsor;
}
很简单,如果我没有得到参数,我只是 return 错误信息。
但是如何让它与 @QueryParam 一起工作?如果验证失败,我怎么说return某个值?
/**
* @QueryParam(name="sponsorId", default="", strict=true)
*/
public function getSponsorById(Request $request)
{
.....
$sponsor = .....
return $sponsor;
}
在这种情况下,您可以使用 symfony ParamFetcher
class 手动完成。
在您的控制器输入参数中添加 ParamFetcher $paramFetcher:
use FOS\RestBundle\Request\ParamFetcher;
...
/**
* @QueryParam(name="sponsorId", default="", strict=true)
*/
public function getSponsorById(Request $request, ParamFetcher $paramFetcher)
{
$sponsorId = $paramFetcher->get('sponsorId');
// Logic to validate $sponsorId and give it default value if not valid.
}
您还可以将 requirements
和 nullable
参数与任何 php 正则表达式模式一起使用,以验证您的输入并在无效时给出错误。像这样:
use FOS\RestBundle\Request\ParamFetcher;
...
/**
* @QueryParam(name="sponsorId", nullable=true, default="", requirements="\d+", strict=true)
*/
public function getSponsorById(Request $request, ParamFetcher $paramFetcher)
{
$sponsorId = $paramFetcher->get('sponsorId');
// Your code.
}
如果 strict
设置为真,当正则表达式与输入不匹配时,RestBundle 抛出错误,如果 strict
为假,当正则表达式与输入不匹配时,参数将被跳过。
我有一个控制器,其中包含许多方法,我向这些方法传递 get 参数。我希望收到一些数据作为响应(取决于我传递的参数)。我正在尝试使用 symphony 的 @QueryParam 来验证传入值,因为其中一些是必需的。
可能传递了多个参数,但第一个参数 sponsorId 是必需的,如果未传递,我想 return 类似 'ERROR: id is not set'
目前我没有使用@QueryParam,我使用的是这样的:
public function getSponsorById(Request $request)
{
if(!$args['sponsorId']) {
return 'ERROR: id is not set';
}
.....
$sponsor = .....
return $sponsor;
}
很简单,如果我没有得到参数,我只是 return 错误信息。 但是如何让它与 @QueryParam 一起工作?如果验证失败,我怎么说return某个值?
/**
* @QueryParam(name="sponsorId", default="", strict=true)
*/
public function getSponsorById(Request $request)
{
.....
$sponsor = .....
return $sponsor;
}
在这种情况下,您可以使用 symfony ParamFetcher
class 手动完成。
在您的控制器输入参数中添加 ParamFetcher $paramFetcher:
use FOS\RestBundle\Request\ParamFetcher;
...
/**
* @QueryParam(name="sponsorId", default="", strict=true)
*/
public function getSponsorById(Request $request, ParamFetcher $paramFetcher)
{
$sponsorId = $paramFetcher->get('sponsorId');
// Logic to validate $sponsorId and give it default value if not valid.
}
您还可以将 requirements
和 nullable
参数与任何 php 正则表达式模式一起使用,以验证您的输入并在无效时给出错误。像这样:
use FOS\RestBundle\Request\ParamFetcher;
...
/**
* @QueryParam(name="sponsorId", nullable=true, default="", requirements="\d+", strict=true)
*/
public function getSponsorById(Request $request, ParamFetcher $paramFetcher)
{
$sponsorId = $paramFetcher->get('sponsorId');
// Your code.
}
如果 strict
设置为真,当正则表达式与输入不匹配时,RestBundle 抛出错误,如果 strict
为假,当正则表达式与输入不匹配时,参数将被跳过。