如何处理Trello Webhooks? RoR API

时间:2019-05-07 09:36:37

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

我是后端开发(RoR)的新手。对不起我的英语不好。

现在,我正在使用Trello API,并尝试接收(处理)webhooks。 我正在使用ruby-trello gem。我也在用ngrok。

我成功创建了Webhooks(在Trello中)。 现在,当我编辑Trello对象(由webhook标记)时,我收到了从Trello到我的应用程序的请求,即WebhooksController#receive。

routes.rb:

  post '/webhooks' => 'webhooks#receive', :defaults => { :format => 'json' }
  get '/webhooks' => 'webhooks#complete', :defaults => { :format => 'json' }

webhooks_controller.rb

class WebhooksController < ApplicationController

  skip_before_action :verify_authenticity_token

  @@data = File.read('public/data.json')

  def complete
    render status: 200
  end

  def receive
    JSON.parse(request.body.read)
    render :json => @@data
  end

end

但是我一直都看到JSON::ParserError (765: unexpected token at ''):

现在我只想查看webhooks请求的json ,以了解并编写下一步代码。

有人可以帮忙吗? 先感谢您。 :)

1 个答案:

答案 0 :(得分:1)

您可以使用logger.info记录来自webhook请求的JSON的内容。

例如:

def receive
  logger.info "Trello webhook request's JSON: #{params}"
  # rest of your code...
end

然后,您必须检查您的日志。可能会在log/production.log中。

如果您能够使Trello命中本地服务器,则可以调试操作以查看webhook请求的JSON中的内容,并在操作中添加debugger语句。

例如:

def receive
  debugger
  JSON.parse(request.body.read)
  render :json => @@data
end

此外,request.body.read并不是获取参数的最佳方法。您只需调用params,它就会返回一个Hash和您的参数。实际上,request.body.read不会以有效格式返回要解析为JSON的对象,我认为这是导致异常的原因。