Как запросить список объектов из Rails API?

#ruby-on-rails #api #http

#ruby-on-rails #API #http

Вопрос:

Я пытаюсь запросить список объектов из Rails API. То есть, допустим, я хотел бы получить экземпляры с идентификатором 2 4 и 7 из определенной модели.

До сих пор моим ближайшим предположением была передача строки id s, разделенной запятыми, на обычный resource/:id маршрут, затем я разделил параметр, создал из него массив и передал его where вызову.

Это работает — однако я чувствую, что это не самый чистый способ сделать то, что я собираюсь сделать.

Итак, я спрашиваю вас, есть ли способ Rails справиться с этим.

Как должен выглядеть URL-адрес? Как мне прочитать переданные значения из контроллера?

Комментарии:

1. Это API под вашим контролем? Если вы хотите передать параметры массива в приложение Rack (например, Rails), вы должны передать их через as ?foo[]=1amp;foo[]=2amp;foo[]=3 . Что даст вам { foo: [1,2,3] } . Однако обрабатывать это в методе show неправильно. Это должно быть сделано в индексном методе, поскольку вы отображаете несколько записей с фильтром.

Ответ №1:

Я думаю, что это должен быть фильтр по пути индекса, принимающий ids параметр.

Итак, URL-адрес должен выглядеть так

 /resource?ids[]=2amp;ids[]=4amp;ids[]=7
 

И вы можете найти эти ресурсы с помощью

 def index
  if params[:ids].blank?
    @resources = Resource.all
  else
    @resources = Resource.find(params[:ids])
  end
end