【发布时间】:2017-08-28 22:25:53
【问题描述】:
我正在运行一个简单的 Sinatra 应用程序,我需要在其中查询一些数据并通过 JSON 将 POST 发送到 webhook URL 进行处理。我不确定如何正确格式化为 HTTParty 检索到的记录。
联系人正在打印到 /account/{account_id}/contacts.json 我想要他们的方式,他们的数据没有成功发送。
app.rb
get "/account/:account_id/contacts.json" do
@contacts = Contact.where("sfid = ?", params[:account_id])
HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/",
{
:body => [ @contacts ].to_json,
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'}
})
@contacts.to_json
end
【问题讨论】:
-
首先,
@contacts.to_json的数据打印方式和[ @contacts ].to_json的发送方式有所不同。这可能是问题所在。但如果不是,我们需要有关您如何确定它没有被发送的更多信息。 -
'where' 已经将数组返回到变量
@contacts。所以@contacts的类型已经是一个数组。我认为在转换为 json 之前不需要再次转换为数组。:body => @contacts.to_json没问题。 -
@AndréGuimarãesSakata 我确定它没有被发送,因为我有一个发送 HTTParty.post("hooks.webapp.com/hooks/catch/387409/1us4j3", { :body => [ {:name => 'value1' , :privacy => 'value2'} ].to_json, :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} }) 成功并被网络挂钩。我在问题中发布的代码没有被捕获。
-
@Mayank 我按照您的建议尝试了/contacts.to_json,但出现了内部服务器错误和这些日志 - evernote.com/shard/s2/sh/60c2d37d-df78-43d9-ac1d-0dacc4f926eb/…
标签: json ruby activerecord sinatra httparty