我是后端开发(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 ,以了解并编写下一步代码。
有人可以帮忙吗? 先感谢您。 :)
答案 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的对象,我认为这是导致异常的原因。