我正在使用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响应的内容。
这样做的正确方法是什么?
答案 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告诉请求者"接下来要去哪里"。