に消費するには、私が作成し、RESTのAPIを消費に関する多くの記事を読んだが、私は、単一のアプリでそれを行う方法についての有用な文書を見つけたhavent。RailsのREST APIと同じアプリケーション
Railsで完成したMVCアプリケーションを使用していましたが、それを変更してREST APIを使用して他の開発用のデータを提供することにしましたが、実際の方法はわかりません。私たちがやったのは、内部にAPIコントローラを持つapi/v1/folder構造を作ることでした。
我々はテストに非常に単純なコントローラがあります。
namespace :api do
namespace :v1 do
scope '/products' do
get '/list' => 'products#list'
end
end
end
を私は期待どおりに動作するサーバーとアクセスhttp://localhost:3000/api/v1/products/listを開始すると:私のルートで
class Api::V1::ProductsController < ApplicationController
def list
@products = Product.limit(100)
render json: @products, status: 200
end
end
は、私は次のようしたファイル。で、次の
class ProductsController < ApplicationController
include HTTParty
base_uri "http://1ocalhost:3000/api/v1/products"
format :json
def index
@products = self.class.get("/list?category_id=22"))
end
end
私はそのルートを取得しようと、それが表示されます。
しかし、今、私は、同じアプリケーションからそれを消費しようとしているので、私は次のコードで別のProductsControllerを持っていますサーバーコンソール:
Started GET "/" for 127.0.0.1 at 2017-05-08 11:58:30 -0400
Processing by ProductsController#index as HTML
Started GET "/api/v1/products/list?category_id=22" for 127.0.0.1 at 2017-05-08 11:58:31 -0400
Completed 500 Internal Server Error in 120213ms (ActiveRecord: 2.9ms)
Net::ReadTimeout (Net::ReadTimeout):
しかし、エラーがスローされた後、要求はバックグラウンドで正しく行われます。
私は、これは正しいアプローチであると私は同じサーバにだと、既にAPIが働いて得ることをテストした場合第二に、なぜ私はそのタイムアウトを取得していた場合に最初に知っていただきたいと思います。
ありがとうございます。
あなたの答えをありがとう、しかし、なぜ私はそのエラーが表示されています。私はまだHTTPリクエストを行わずにその関数を呼び出す方法を知る必要があります(まだREST APIが必要です)。 – Kunstmann
@Kunstmann:どのような関数ですか?残りのAPIエンドポイント? httpコール経由のみ。答えの最後の部分を確認してください。それはあなたに役立つ提案を含んでいます。 –