2016-07-27 8 views
0

$ httpサービスを使ってAPI呼び出しを行う方法を知っていますが、すべての例ではオンラインでWeb APIを呼び出しています。私の問題は、私の同僚がRubyを使用してAPIを構築したため、ローカル環境にあるため呼び出す方法がわかりません。ここにRubyコードがあります:ローカルRubyファイルへのAPI呼び出しの作成方法

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

クライアント(Webブラウザ)上での角度実行。 Rubyはサーバ上で動作します(別のコンピュータ、別の場所)。サーバーにXHR要求を行うには、Angularが必要です。サーバー上のRubyコードは、サーバー上の他のRubyコードを呼び出すことができます。この場合、リクエストやアプリケーションの起動時に新しい 'Api :: SignageAgentController'をインスタンス化し、そのメソッドを呼び出すことができます。 – Phrogz

+0

'config/routes.rb'だが、' signage_agent'に関連するものだけを表示できますか? – fbelanger

+0

@fbelanger signageエージェントへの参照に何かが見つからないかのように、ルートファイルで呼び出された他のapiには、その下にある他のコードと "do"があります。ここにあります: 'resources:signage_agent、only:[:index、:update]' – ADHDTurtle

答えて

0

これは、Api::SignageAgentControllerに定義されているURLパスによって異なります。

プロジェクトにアクセスできる場合は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が表示されない場合は、すべて問題ありません。

これらが存在する場合、Linuxの場合はpowまたはpraxのようなRack Proxyが必要になることがあります。

まだブラウザまたは自由に利用できるオンラインソリューション用のプラグインRESTfulなAPIのテストを使用し、ブラウザやより良いを使用して(URLパスを)あなたのエンドポイントをテストしますと、Railsのルーティング上に読んで試してみてください(Googleのオンライン残りのAPIテスト)

をこれは、フロントエンドでAJAXを利用するのに役立ちます。 Railsルーティングについて学ぶことで、会社のAPIをどのように使用するかを理解するのに役立ちます。

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

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

あなたはconfig/routes.rbでの組み合わせは、あなたが本当に理解するために必要なすべてであることがわかります。

穏やかなAPIは、コントローラ(特にWebリクエストを処理する)をURLパスにマップするために、HTTP動詞(get、post、put/patch、delete)を使用します。

あなたはindexアクションがID(したがってparams[:id])を表しているだけでコントローラ名とGET要求、無/1、に設定する可能性があります。

関連する問題