Как сделать вызов API для локального файла ruby

0

Я знаю, как сделать вызовы API угловыми, используя службу $ http, но все примеры онлайн вызывают веб-API. Моя проблема в том, что мой коллега построил API с использованием ruby, и я не знаю, как назвать его, так как он находится в моей локальной среде. Вот код Ruby:

class Api::SignageAgentController < ApiController

   def index
      render json: Ingestor.signage_agents.to_json
   end

   def update
      return render(status: :unprocessable_entity,json: ['No signage agent given']) unless @ingestor == Ingestor.signage_agents.find_by_id(params[:id])

      if @ingestor.update_attributes(valid_params)
         render json: @ingestor.to_json
      else
         render(status: :unprocessable_entity,json: @ingestor.errors.to_a)
      end
   end

   protected

   def valid_params
      params.require(:signage_agent).permit(:policy_file_keys) rescue {}
   end
end

Как мне обратиться к индексу в angularjs?

  • 1
    Angular запускается на клиенте (веб-браузер); Ruby работает на сервере (другой компьютер, другое местоположение). Angular необходим для отправки XHR-запроса на сервер, и код Ruby на сервере может затем вызывать другой код Ruby на сервере. В этом случае вы можете захотеть создать новый Api::SignageAgentController либо во время запроса, либо при запуске приложения, и вызвать для него методы.
  • 0
    Можете ли вы показать нам, что вы config/routes.rb , но только те, которые связаны с signage_agent ?
Показать ещё 2 комментария

1 ответ

0
Лучший ответ

Это будет зависеть от пути URL, определенного для этого Api::SignageAgentController.

Если у вас есть доступ к проекту, перейдите в config/routes.rb и найдите что-то вроде signage_agent.

Предполагая, что ваши маршруты выглядят примерно так:

Rails.application.routes.draw do
  namespace :api, { .. } do
    # get '/signage_agent', to: 'signage_agent#index'
    resources :signage_agent, only [:index, ...]
  end
end

Затем в углу:

$http({
  method: 'GET',
  url: '/api/signage_agent'
}).then(function successCallback(response) {

  }, function errorCallback(response) {

});

В зависимости от части {...}, ваш URL-адрес может меняться.

Если вы не видите subdomain или path, то все в порядке.

Если они присутствуют, вам может понадобиться Rack Proxy, например, pow или prax, если вы находитесь в Linux.

Проверьте свои конечные точки (пути URL) с помощью вашего браузера или еще лучше используйте плагины Restful API Testing для своего браузера или доступные онлайн-решения (Google: rest api test online)

Попробуйте прочитать Rails Routing, так как это поможет вам использовать AJAX на Front-end. Изучение маршрутизации Rails также поможет вам понять, как использовать API вашей компании.

http://guides.rubyonrails.org/routing.html

http://api.rubyonrails.org/classes/ActionDispatch/Routing.html

Вы обнаружите, что комбинации в config/routes.rb - это все, что вам действительно нужно понять.

Restful APIs используют HTTP-глаголы (get, post, put/patch, delete) для сопоставления контроллеров, в частности их действия (которые обрабатывают веб-запрос), пути URL.

Вероятно, вы указали, что параметр index будет настроен на запрос GET с именем контроллера, no /1, который представляет идентификатор (таким образом, params[:id]).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню