Нарушение требования маршрутизации Symfony2 не приводит к ответу с правильным типом содержимого - PullRequest
2 голосов
/ 27 января 2012

В настоящее время я пишу службу REST в приложении Symfony2. Примерно так выглядит один из моих контроллеров:

/**
 * @Route("/account", defaults={"_format" = "json"})
 */
class AccountController extends APIController
{
    /**
     * @Route("/")
     * @Method("get")
     */
    public function listAction()
    {
        // process something here and return JSON-encoded response
    }
}

Это работает нормально - то есть, если возникает какая-то проблема, и я выбрасываю HTTPException, используется правильный error.json.twig из TwigBundle Symfony2 и отображает ошибку HTTP как JSON.

Однако это не относится к нарушению требований маршрута, одним из которых является @Method("get"). Например, если я кидаю POST или PUT по указанному выше URL-адресу, я все равно получаю правильный код состояния HTTP, но отображается с неверным типом содержимого (text / html вместо application / json).

Мне очень интересно, чтобы полный API возвращал ответы JSON и ничего больше - вопрос в том, как мне этого добиться? Должен ли я полностью пропустить требования к маршруту и ​​проверить их самостоятельно (а затем в конечном итоге выбросить свои HTTPException s)?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Вы всегда можете попробовать использовать yml-маршрутизацию поверх аннотации.У меня отлично работает.Извините, не могу дать более полезный ответ.

0 голосов
/ 28 января 2012

Вы, вероятно, должны подать это как ошибку / желание на их странице github . (Я пытался найти ответственный файл PHP, но компонент HttpKernel не совсем для слабонервных.)

...