symfony Вывод сообщений сообщений исключений (ошибок) в формате JSON. Разные форматы для разных контроллеров

Symfony 5

Если используете аннотации, то в файле:

config/routes/annotations.yaml

можно написать так:

controllers:
    resource: ../../src/Controller/
    type: annotation
api-controllers:
    resource: ../../src/Controller/Api
    type: annotation
    defaults:
        _format: json

В данном случае контроллеры из директории

../../src/Controller/Api  

в случае возникновения в них исключительной ситуации будут выводить сообщения именно в формате json.

Symfony 6

Сначала установим пакет:

composer require symfony/serializer-pack

Затем используем тот же подход, что и для 5-ой версии, но можно без упоминания аннотаций, напр. в файл:

controllers:
    resource: ../src/Controller/
    type: attribute

Добавим:

controllers:
    resource: ../src/Controller/
    type: attribute
    defaults:
        _format: json

-- этого хватит для измения формата отображения (на json) неперехваченных исключений - "нефатальных" ошибок, но напр. для ошибки синтаксиса будет показана опять HTML-страница.

Если нужно конвертировать в xml, то по аналогии указываем:

controllers:
    resource: ../src/Controller/
    type: attribute
    defaults:
        _format: xml

Документация: