发送JSON Webhook响应

发送JSON Webhook响应,json,ruby,sinatra,httparty,zapier,Json,Ruby,Sinatra,Httparty,Zapier,我试图通过JSON接收来自Web服务的请求,如果令牌正确,则发送成功的响应消息以及其他一些标识信息,否则发送正确的错误消息 post "/hook/foo/bar" do puts request.env if request.env['TOKEN'] === "secret_code" HTTParty.post("https://hook.com/hooks/catch/foo/bar/", { :body => @info.to_json, :headers

我试图通过JSON接收来自Web服务的请求,如果令牌正确,则发送成功的响应消息以及其他一些标识信息,否则发送正确的错误消息

post "/hook/foo/bar" do
puts request.env

if request.env['TOKEN'] === "secret_code"
  HTTParty.post("https://hook.com/hooks/catch/foo/bar/",
  {
    :body => @info.to_json,
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'}
  })

  [200, {}, "Success"]
else
  [400, {}, "Authorization Failed"]
end

发送钩子的服务(Zapier)说它成功地发送了钩子,但我没有对我可以使用的任何有意义的数据做出响应。我相信我的回答格式是错误的,但我不确定如何设置。

来自Zapier平台团队的David

根据sinatra,您可以返回:

包含三个元素的数组:[状态(Fixnum)、头(Hash)、响应体(响应#每个)]

因此,您不发送关于内容类型的任何提示,而是发送一个字符串作为正文。这是有效的,您的钩子成功了,但您可以做得更好

Zapier将来自传出钩子的响应解析为JSON,因此最好将其发送回

我刚刚测试了以下示例:

require 'sinatra'
require 'json'

get '/' do
  'hello world!'
end

post '/hook' do
  {message: 'great!'}.to_json
end
我的回答被解析了!

如果您想设置状态代码,老实说,最简单的方法是在您返回之前随时使用函数
status(400)
。这就是说,
401
可能是您想要用于
Unauthorized”的代码,而不是
400`。不过,无论哪种方式,zapier都会将其标记为错误运行


​如果您还有其他问题,请告诉我!

这里是Zapier平台团队的David

根据sinatra,您可以返回:

包含三个元素的数组:[状态(Fixnum)、头(Hash)、响应体(响应#每个)]

因此,您没有返回关于内容类型和字符串作为主体的提示。这是有效的,钩子成功了,但您可以做得更好

Zapier将来自传出钩子的响应解析为JSON,因此最好将其发送回

我刚刚测试了以下示例:

require 'sinatra'
require 'json'

get '/' do
  'hello world!'
end

post '/hook' do
  {message: 'great!'}.to_json
end
我的回答被解析了!

如果您想设置状态代码,老实说,最简单的方法是在您返回之前随时使用函数
status(400)
。也就是说,
401
可能是您想要的
Unauthorized”的代码,而不是
400`。不管怎样,zapier都会将该运行标记为错误


​如果你还有其他问题,请告诉我

不确定我是否理解正确,但您是否希望从您提出的POST请求中返回一些响应数据?不确定我是否理解正确,但您是否希望从您提出的POST请求中返回一些响应数据?