Виноградный API игнорирует параметры PUT/POST
Я строю виноградный API для приложения рельсов. Я тестирую его с помощью спецификации запроса rspec. Я столкнулся с проблемой при создании маршрута сообщения следующим образом:
resources :events do
segment '/:event_id' do
resources :tickets do
post do
event = current_user.events.find params[:event_id]
...#do sth with event using params[:tickets_ids]
соответствующая спецификация:
it "should should return the JSON hash of validated tickets" do
post "/api/mobile/#{version}/events/#{event.id}/tickets/", { tickets_ids: [1,2] }, credentials
response.should be_success
JSON.parse(response.body).should be_kind_of Hash
end
Виноградный "контроллер" не может видеть никаких параметров, которые не отправляются как часть URL. При печати параметров [:tickets_ids] это ноль. У меня нет этой проблемы при использовании запросов на получение. Я могу воспроизвести проблему при отправке запроса вручную с помощью curl. Маршрутизация вложенных ресурсов также не является проблемой, поскольку она ведет себя так же, как и маршрут верхнего уровня.
Я обнаружил следующую проблему на GitHub, но применение данного патча обезьяны не работает и ломает сервер при запуске. https://github.com/intridea/grape/issues/417
Я использую следующую версию гемов и не могу обновить их из-за конфликтов зависимостей:
grape (0.2.1.1)
rails(3.0.7)
rspec-rails (2.6.1)
Любая помощь и советы будут с благодарностью.
1 ответ
Насколько я помню, должен быть набор заголовков Content-Type со значением application/x-www-form-urlencoded