Я могу получить параметры GET с аннотацией @QueryParam()
, но похоже, что он работает только для данных строки запроса: /user?id=123
.FOSRestBundle: маршруты и аннотации для параметров
Я бы предпочел, чтобы это было как /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'
Мое противоречивое DocBlock:
/**
* 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. Как я могу решить эту проблему? @Get
аннотацию
nifr, спасибо за вашу помощь! Единственное, что не выглядит красивым, - это то, что один параметр описывается дважды, в '@ Get' и' @ ApiDoc'. –
Если вы отпустите раздел 'parameters' из раздела' @ ApiDoc' и добавьте '@param integer $ id Описание id здесь ниже, что, похоже, делает трюк – lopsided