ruby-on-rails - 如何处理 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以了解和编写后续步骤。
有人可以帮忙吗?先感谢您。:)
解决方案
您可以使用 .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 的有效格式的对象,我认为这是异常的原因。
推荐阅读
- javascript - 根据随机问题显示一组图像
- json - 无法对 wc_get_products() 的结果进行 json 编码
- scala - 从 Scala 中的命令行运行但从 intelliJ 正常工作时获得预期的类或对象定义
- java - 客户 Transformer 通过 Java 端的 SkLearn2PMML-Plugin 转换为 PMML
- java - 如果签名不同,Java编译器禁止在内部类中创建与外部类同名的方法
- node.js - Node/Express 应用程序查询第 3 方 API 并将响应存储在 memcache/redis 中 30 分钟以供将来查询
- javascript - 从其值更改具有一个属性的对象的键
- android - Retrofit 中的“PUT”和“DELETE”方法中的 IOException(流结束)
- google-api - 使用 gapi.auth2.authorize 时如何注销
- javascript - 连接成功后连接到 websocket 通道