Маршрутизация для нескольких REST-контроллеров с использованием FOSRestBundle с Symfony 3.4 - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь настроить маршрутизацию, используя FOSRestBundle (2.3.1) с Symfony (3.4.11).Следующее работает, как и ожидалось:

routing.yml:

fooV1:
    type:     rest
    resource: AppBundle\Controller\V1\FooController
    prefix: /api/v1

производство:

/bin/console debug:router
--------------------------------- -------- -------- ------ -------------------------------
Name                              Method   Scheme   Host   Path
--------------------------------- -------- -------- ------ -------------------------------
get_foos                         GET      ANY      ANY    /api/v1/foos.{_format}
get_foo                          GET      ANY      ANY    /api/v1/foos/{bar}.{_format}
post_foos                        POST     ANY      ANY    /api/v1/foos.{_format}
put_foos                         PUT      ANY      ANY    /api/v1/foos/{bar}.{_format}
delete_foos                      DELETE   ANY      ANY    /api/v1/foos/{bar}.{_format}
--------------------------------- -------- -------- ------ -------------------------------

Пока все хорошо.Теперь я хочу добавить API V2:

routing.yml:

fooV1:
    type:     rest
    resource: AppBundle\Controller\V1\FooController
    prefix: /api/v1
fooV2:
    type:     rest
    resource: AppBundle\Controller\V2\FooController
    prefix: /api/v2

Проблема в том, что маршруты / контроллер V1 , кажется, полностью исчезают, и только V2 Осталось (обратите внимание, что контроллеры имеют те же методы, меняется только формат ответа, следовательно, и новая версия):

/bin/console debug:router
--------------------------------- -------- -------- ------ -------------------------------
Name                              Method   Scheme   Host   Path
--------------------------------- -------- -------- ------ -------------------------------
get_foos                         GET      ANY      ANY    /api/v2/foos.{_format}
get_foo                          GET      ANY      ANY    /api/v2/foos/{bar}.{_format}
post_foos                        POST     ANY      ANY    /api/v2/foos.{_format}
put_foos                         PUT      ANY      ANY    /api/v2/foos/{bar}.{_format}
delete_foos                      DELETE   ANY      ANY    /api/v2/foos/{bar}.{_format}
--------------------------------- -------- -------- ------ -------------------------------

My fos_rest config (в config.yml):

fos_rest:
    exception:
        enabled: true
        exception_controller: 'AppBundle\Controller\ExceptionController::showAction'
    routing_loader:
        default_format: json
    view:
        view_response_listener: force
        formats:
            rss: false
            xml: false
            json: true
            jsonp: false
    body_converter:
        enabled: true
    body_listener:
        default_format: json

Какие-нибудь советы по созданию этой работы без необходимости переписывать всю маршрутизацию / контроллеры?Существующая документация выглядит не совсем точной, с документированными полями, которые не работают.

1 Ответ

0 голосов
/ 30 мая 2018

Возможно, сгенерированные маршруты V2 заменяют маршруты V1, поскольку они имеют одинаковые сгенерированные имена.Действительно, FOSRest может генерировать REST-маршруты, как вы уже знаете.

...