Как декодировать закодированные параметры запроса в GET-запросе с помощью Grape-API

Я использую grape-api, и у меня возникла проблема с выполнением запроса GET от моей внешней службы с закодированными параметрами запроса. Вот как моя конечная точка настроена на получение параметров:

params do
  requires :event_id, type: String, desc: 'Event id'
  requires :tickets, type: Array, desc: 'Array of each ticket data ex:  [ {id: "", count: 1 , coupon_code: ""} ]', allow_blank: false do
    requires :id, type: String, desc: 'Ticket id'
    requires :count, type: Integer, desc: 'Number of tickets to get'
    optional :coupon_code, type: String, desc: 'Promocode to apply if any'
  end
end

Как видите, я ожидаю параметр event_id и другой массив объектов с параметром tickets, и вот как выглядит URL-адрес запроса:

http://localhost:3000/api/service_fees/calculate?eventId=2xy6rft69azlu2mtppnzb1xe6olzd3f0&tickets[]=%7B%22id%22:%22vohd3y3n25cdgbvi3uzmqhcyie3zi53a%22,%22count%22:2%7D

однако виноград, похоже, не понимает эти закодированные параметры запроса, и я получаю это исключение:

[Exception: event_id is missing, tickets[0][id] is missing, tickets[0][id] is invalid, tickets[0][count] is missing, tickets[0][count] is invalid]

мой вопрос таков: есть ли способ, которым я могу заставить виноград правильно декодировать и анализировать параметры запроса? я что-то пропустил здесь?


person amrrbakry    schedule 07.08.2018    source источник
comment
Можете показать логи сервера?   -  person Jagdeep Singh    schedule 08.08.2018
comment
Я не вижу никаких параметров event_id в отображаемом вами URL-адресе. Это eventId.   -  person Jagdeep Singh    schedule 08.08.2018


Ответы (1)


http://localhost:3000/api/service_fees/calculate?eventId=2xy6rft69azlu2mtppnzb1xe6olzd3f0&tickets[]=%7B%22id%22:%22vohd3y3n25cdgbvi3uzmqhcyie3zi53a%22,%22count%22:2%7D

Для приведенного выше URL-адреса запроса отправлено имя параметра eventID, тогда как Grape API требует/ожидает event_id. Кроме того, конструкция tickets параметров строки запроса URL неверна.

Можете ли вы попробовать это вместо этого -- http://localhost:3000/api/service_fees/calculate?eventId=2xy6rft69azlu2mtppnzb1xe6olzd3f0&tickets[0][id] =12&tickets[0][count] =13&tickets[0][coupon_code]=amrrbakry

person Bist S    schedule 11.12.2019