POST管线注释symfony2
我正在尝试开发一个RESTAPI,我对路由注释有一个问题,因为get工作得很好,我的get代码如下POST管线注释symfony2,symfony,routes,Symfony,Routes,我正在尝试开发一个RESTAPI,我对路由注释有一个问题,因为get工作得很好,我的get代码如下 /** * @QueryParam(name="offset", requirements="\d+", nullable=true, description="Offset from which to start listing pages.") * @QueryParam(name="limit", requirements="\d+", nullable=true, defaul
/**
* @QueryParam(name="offset", requirements="\d+", nullable=true, description="Offset from which to start listing pages.")
* @QueryParam(name="limit", requirements="\d+", nullable=true, default="20", description="How many pages to return.")
*
* @View()
*
* @param Request $request the request object
* @param ParamFetcherInterface $paramFetcher param fetcher service
* GET Route annotation.
* @Get("/users/")
* @return array
*/
public function getUsersAction(Request $request, ParamFetcherInterface $paramFetcher)
{
$offset = $paramFetcher->get('offset');
$offset = null == $offset ? 0 : $offset;
$limit = $paramFetcher->get('limit');
return $this->container->get('user.handler')->all($limit, $offset);
}
对于帖子我不知道怎么做,我的代码如下,我想在url中添加用户属性,怎么做
/**
* @View(template = "UserBundle:User:register.html.twig", statusCode = Codes::HTTP_BAD_REQUEST, templateVar = "form")
*
* @param Request $request the request object
* POST Route annotation.
* @Post("/users/")
* @return FormTypeInterface|View
*/
public function postUserAction(Request $request)
{
try {
$newUser = $this->get('user.handler')->post($request);
$routeOptions = array(
'id' => $newUser->getId(),
'_format' => $request->get('_format')
);
return $this->routeRedirectView('get_user', $routeOptions, Codes::HTTP_CREATED);
} catch (InvalidFormException $exception) {
return $exception->getForm();
}
}
您可以从请求中获取这些参数:
/**
* @View(template = "UserBundle:User:register.html.twig", statusCode = Codes::HTTP_BAD_REQUEST, templateVar = "form")
*
* @param Request $request the request object
* POST Route annotation.
* @Route("/user/{name}/{email}")
* @Method("POST")
* @return FormTypeInterface|View
*/
public function postUserAction(Request $request, $name, $email)
{
try {
$newUser = $this->get('user.handler')->post($request);
$routeOptions = array(
'id' => $newUser->getId(),
'_format' => $request->get('_format')
);
return $this->routeRedirectView('get_user', $routeOptions, Codes::HTTP_CREATED);
} catch (InvalidFormException $exception) {
return $exception->getForm();
}
}
我该怎么做呢?在我的例子中,我想添加一个用户的urm属性来发布它。。像用户/fabian/fabian@gmail.com/…我已经更新了答案,您可以添加路由占位符。请阅读文档中的更多内容。此外,您还可以添加需求和默认值:@annadamchuk Good one。获取并发布扩展路由注释的FOSRestBundle,因此我想,您也可以在其中使用占位符(例如:Post(“/user/{name}/{email}”),请显示您的最终代码和异常文本?似乎您忘了提到您正在使用FOSRestBundle。对吗?是的,我使用FOSRestBundle