Rails 4 API,如何从JSON响应创建URL?

时间:2016-08-30 15:20:33

标签: ruby-on-rails json api rails-api

我正在使用API​​设置一些路线,即

http://localhost:3000/phone_number_lookup/1234567890

可以返回JSON响应,如下所示:

{
  "AccountCode": "1234",
  "AccountID": 13579,
  "BalanceCurrent": "5000",
  "Phone": "1234567890",
  "Id": 123123,
  "SerialNumber": "Y2K2000XY2016",
  "MACADDRESS": "y2k2000xy2016",
  "EQUIPMENTTYPE_Name": "Motorola DCX100 HD DVR",
  "ADDRESS_Zip": "90210",
  "ItemID": 12345,
  "iVideoSystemID": 1000001
  "id": null
}

下一步'根据最初返回的响应,API消耗将是,使用其中的4个参数并将它们传递到远程URL,然后执行某些操作。'

像这样:

http://myremoteURL.com/Service/?Param1=sSerialNumber&Param2=iVideoSystemID&Param3=sMAC&Param4=ItemID

设置一个包含4个参数的路由是一回事,但路由需要取决于初始JSON响应的内容。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

首先,您必须将JSON转换为哈希值。这样的事情会做:

[7] pry(main)> hash=JSON.parse(json)
=> {"AccountCode"=>"1234",
 "AccountID"=>13579,
 "BalanceCurrent"=>"5000",
 "Phone"=>"1234567890",
 "Id"=>123123,
 "SerialNumber"=>"Y2K2000XY2016",
 "MACADDRESS"=>"y2k2000xy2016",
 "EQUIPMENTTYPE_Name"=>"Motorola DCX100 HD DVR",
 "ADDRESS_Zip"=>"90210",
 "ItemID"=>12345,
 "iVideoSystemID"=>1000001,
 "id"=>nil}

然后你必须选择4个参数发送。我刚拿了最后4个参数

[14] pry(main)> chosen_params = hash.slice("ItemID", "id", "iVideoSystemID", "ADDRESS_Zip")
=> {"ItemID"=>12345, "id"=>nil, "iVideoSystemID"=>1000001, "ADDRESS_Zip"=>"90210"}

然后你必须将它们传递给你的远程网址。这可以使用描述here的帮助程序来完成。然后你必须做一些像generate_url("YOUR-URL-ADDR-HERE", chosen_params)这样的事情。 此时,您可能希望以生成所需URL的方式更改generate_url帮助程序。也许它应该采用名为action的第三个参数,然后生成类似http://www.google.com/action?{chosen_params}

的网址

结果将是:

[23] pry(main)> generate_url("http://www.google.com", chosen_params)
=> "http://www.google.com?ADDRESS_Zip=90210&ItemID=12345&iVideoSystemID=1000001&id="

希望它有所帮助。如有任何问题,请告诉我。

答案 1 :(得分:0)

你能修改JSON响应吗?

{
  "AccountCode": "1234",
  "AccountID": 13579,
  ...
  "id": null
  "follow_up_url": "http://myremoteURL.com/Service/?Param1=sSerialNumber&Param2=iVideoSystemID&Param3=sMAC&Param4=ItemID"
}

这允许您的JSON告诉请求者"接下来要去哪里"。