Почему я получаю 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-адреса (и при моем ограниченном исследовании Интернета это может быть предпочтительным подходом в любом случае).