2017-09-23 14 views
0

私には以下を手伝ってください。 私は多くのアプリケーションと関連レコードを持っています。Ruby RestClientペイロード付きGETリクエスト

app with id 1 has: record1, record2 and record3. 
app with id 2 has: record1 ... record1000 

カールを使用してアプリ1のレコードをフィルタリングするには私は、次のコマンドを使用してレコードを取得することができます。

curl -i -H "accept: application/json" -H "Content-type: application/json" -X GET -d '{ "filters": { "app_id":"1" }}' http://[rails_host]/v1/records?token=[api_token] 

を、私は同じですが、ルビーRestClient(宝石「残り-クライアント」「1.7.2」)とを行うことができますどのように

私はすべてのレコードを取得するには次

RestClient.get("http://[rails_host]/v1/records?token=[api_token]", { :content_type => 'application/json', :accept => 'application/json'}) 

問題は、アプリIDが返されないように、私は応答を解析し、アプリケーションIDを持つレコードを取ることができないです= 1

私はFiにRestclient.getするペイロードを追加することができますどのように任意のアイデアレコードを聴く?

+0

悪いデザインです。技術的にはこれを行うことができますが、仕様を満たすためには、GETの本体は決して応答に影響しないはずです(したがって、同じ応答は身体に関係なく戻ってくるはずです)。さらに、多くの人(そしてその実装)は、GETリクエストが重要なボディを持つことができないと想定しているので、多くの実装ではあなたが身体を送ることができません。基本的には、GETが要求本体でデータを要求/使用するAPIを構築しないでください。 – Joe

+0

残念ながら、アプリケーションをビルドしていません。現在、既存のものを使用し、既存の機能を使用して継続的な統合ソリューションを作成しようとしています。おかげで – Andriy

答えて

1

はPOST、PATCH、およびPUTです。ペイロードを使用してGET要求を行うには、あなたは、これは次のようになりRestClient::Request.execute

を使用する必要があります:GETで体を使用して

RestClient::Request.execute(
    method: :get, 
    url:  "http://[rails_host]/v1/records?token=[api_token]", 
    payload: '{ "filters": { "app_id":"1" } }', 
    headers: { content_type: 'application/json', accept: 'application/json'} 
) 
+1

素晴らしい!期待どおりに動作します。ありがとう – Andriy

-1

JSONでデータを送信できますか?あなたはペイロード引数を受け入れるだけハイレベルのヘルパーというドキュメントhereで見ることができます

data = { param1: 'one', nested: { param2: 'two' }}.to_json 
headers = { content_type: :json, accept: :json } 

RestClient.get("http://#{rails_host}/v1/records?token=#{api_token}", data, headers) 
関連する問題