首页 > 解决方案 > 如何处理 Trello webhook?RoR API

问题描述

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

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

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

路线.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以了解和编写后续步骤。

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

标签: ruby-on-railsrubyapiwebhooksrails-api

解决方案


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

例如:

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

然后你必须检查你的日志。大概会在log/production.log

如果您能够让 Trello 访问您的本地服务器,则可以调试您的操作以查看 webhook 请求的 JSONdebugger中的内容,并将语句放入操作中。

例如:

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

此外,request.body.read这不是获取参数的最佳方式。你可以打电话params,它会Hash用你的参数返回一个。实际上,request.body.read没有返回要解析为 JSON 的有效格式的对象,我认为这是异常的原因。


推荐阅读