Я знаю, как сделать вызовы 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?
Это будет зависеть от пути 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]
).
Api::SignageAgentController
либо во время запроса, либо при запуске приложения, и вызвать для него методы.config/routes.rb
, но только те, которые связаны сsignage_agent
?