FOSRestBundle: маршруты и аннотации для параметров

Я могу получить параметры GET с аннотацией @QueryParam(), но похоже, что это работает только для данных строки запроса: /user?id=123.

Вместо этого я бы предпочел, чтобы это было как /user/123. Для этого я мог бы использовать аннотацию @Get("/user/{id}"), но я не вижу дополнительных метаданных, которые есть у @QueryParam():

name="id", requirements="\d+", default="1", description="User id"

Если я использую обе аннотации, я получаю сообщение об ошибке:

ParamFetcher parameter conflicts with a path parameter 'id' for route 'getone'

Мой конфликтующий блок документов:

/**
 * Finds and displays a Users entity.
 *
 * @Rest\View
 * @Rest\Get("/user/{id}")
 * @Rest\QueryParam(name="id", requirements="\d+", default="1", description="User id")
 * @ApiDoc(section="Partner Users")
 * @param int $id
 * @return array
 */

PS Мне нужно иметь идентификатор в пути (/user/123), а не в запросе, и мне также нужно использовать @QueryParam(), поскольку он читается NelmioApiDocBundle. Как я могу решить эту проблему?


person Roman Newaza    schedule 23.11.2013    source источник


Ответы (2)



Если вам нужно описание требований, просто сделайте это в аннотации.

   /**
  * @Rest\View
  * @Rest\Get("/user/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1})
  * @ApiDoc(
  *  description="Returns a User Object",
  *  requirements={
  *      {"name"="id", "dataType"="integer", "required"=true, "description"="User Id"}
  *  }
  * )
  */
person Zwen2012    schedule 29.01.2015