Symfony 4.4 - NelMioApiBundle и FosRestBundle: {параметр} отсутствует в URL без аннотации @Route, если сущность реализует интерфейс - PullRequest
0 голосов
/ 29 апреля 2020

РЕДАКТИРОВАТЬ:

Это происходит только когда Entity параметра реализует интерфейс.

Я разрабатываю API Symfony 4.4 , и я использую, в частности, следующие пакеты:

  • NelMioApiBundle -> nelmio / api-do c - bundle 3.6.1
  • FosRestBundle -> friendsofsymfony / rest-bundle 2.7.3

Я использую аннотации Swagger документировать остальные API. Все работает, но мне интересно, как автоматически документировать входящий параметр в getAction () без явной аннотации @Route. Это работало в старой документации @ ApiDo c, но я не могу автоматически сгенерировать параметр url с помощью Swagger.

Я объясню на примере:

Старая @ ApiDo c документация

/**
 * Returns content page
 * @ApiDoc(
 *  section="Page",
 *  headers={
 *   {"name"="authorization", "description"="Bearer {token}", "required"="true"}
 *  }
 * )
 *
 * @param ContentPage $page
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function getAction(ContentPage $page)
{
    return $this->serialize($page);
}

вернула эту конечную точку в документации:

enter image description here

Но теперь, если я добавлю эти аннотации:

 /**
 * @SWG\Get(
 *     summary="Page",
 *     description="Get page",
 *     @SWG\Response(
 *         response=200,
 *         description="Get page",
 *         @Model(type=PageData::class)
 *     )
 * )
 * @SWG\Parameter(
 *     name="pageData",
 *     in="path",
 *     type="number",
 *     description="The page data id"
 * )
 *
 * @param PageData $pageData
 *
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function getAction(PageData $pageData) {

    return $this->serialize($pageData);
}

Я получу это:

enter image description here

Но , чтобы получить это:

enter image description here

Мне нужно явно добавить эту аннотацию

@Rest\Route("/page-data/{pageData}")

Я не хочу этого делать, потому что я использую префиксы и все FosRest автоматически маршрутизирует поколения, было бы бесполезно использовать FosRest, а затем явно express @Route аннотацию в каждой конечной точке GET.

Я думаю, что я просто что-то упустил .. Кто-нибудь знает, как получить это поведение без использования аннотаций @Route?

Спасибо!

...