Почему я получаю 405 по запросу POST для JSON?

Итак, у меня есть приложение Padrino с контроллером, которое выглядит примерно так (упрощенно для краткости):

App.controllers :questions do
  get :index, :with => :id, :provides => [:html, :json] do
    # Stuff
  end

  post :index, :with => :id, :provides => [:html, :json] do
    # Other stuff
  end
end

Если я нажимаю "Вопросы /1" в своем браузере, я вижу страницу HTML для данного вопроса. Если я нажимаю "questions/1.json", я вижу JSON-представление вопроса. Точно так, как я ожидал.

Теперь, если я отправляю запрос POST в "questions/1" через веб-форму, это работает. Но если я пытаюсь отправить POST-запрос в "questions/1.json" (сигнализируя, что я хочу получить ответ в формате JSON - или, по крайней мере, так я думал, он работал), я получаю метод 405 Not Allowed.

Я предполагаю, что есть кое-что основное, что я неправильно понимаю здесь. Что мне не хватает? Что еще более важно, как мне определить маршрут для приема запросов POST и предоставления ответов в формате HTML или JSON?

1 ответ

Ну, я не совсем уверен, почему это происходит; но сейчас я решил эту проблему, установив заголовок "ПРИНЯТЬ" в моем запросе POST на "application/json" вместо того, чтобы прикреплять ".json" к концу URL-адреса (и при моем ограниченном исследовании Интернета это может быть предпочтительным подходом в любом случае).

Другие вопросы по тегам