Lui*_*igi 13 ruby-on-rails webhooks
我不熟悉Webhooks,但我觉得它们对我的应用程序来说是正确的.
我有FluidSurveys webhook的以下文档
我理解如何通过POST
对他们的请求制作webhook API
,但我不知道如何判断webhook实际发送响应的位置.我可以通过我想要的任何订阅网址吗?例如https://www.myapp.com/test
,那是webhook
发送数据的地方?此外,webhook
创建后,我不知道如何确保我的Rails应用程序将收到启动的响应.我假设一个控制器方法与我提供给webhook的url相对应.
如果我在处理webhook的控制器上是正确的,那会是什么样子?
任何指导表示赞赏.
lip*_*ski 61
Webhooks 通过您提供的回调URL 挂钩到您的应用程序.这只是您的一个控制器中的一个操作,它响应POST请求并处理webhook请求.每次更改远程服务时,远程服务都会向您提供的回调URL发出请求,从而触发操作代码.
我将通过调查创建事件来举例说明.首先,为此事件定义一个回调操作,您可以在其中处理来自webhook的请求.如前所述这里的网络挂接与以下身体反应:
survey_creator_name=&survey_name=MADE+A+NEW+SURVEY&survey_creator_email=timothy@example.com&survey_url=http%3A%2F%2Fexample.com%2Fsurveys%2Fbob%2Fmade-a-new-survey%2F``
Run Code Online (Sandbox Code Playgroud)
我们暂时离开标题,它们不包含重要信息.可用的身体参数(survey_creator_name
,survey_name
等)将反映有关对远程服务提供的新调查的所有细节.所以让我们编写一个处理此请求的回调操作:
class HooksController
def survey_created_callback
# If the body contains the survey_name parameter...
if params[:survery_name].present?
# Create a new Survey object based on the received parameters...
survey = Survey.new(:name => params[:survey_name]
survey.url = params[:survey_url]
survey.creator_email = params[:survey_creator_email]
survey.save!
end
# The webhook doesn't require a response but let's make sure
# we don't send anything
render :nothing => true
end
end
Run Code Online (Sandbox Code Playgroud)
让我们为此添加路径(in config/routes.rb
):
scope '/hooks', :controller => :hooks do
post :survey_created_callback
end
Run Code Online (Sandbox Code Playgroud)
这将启用该POST /hooks/survey_created_callback
路线.
现在,您需要将此回调URL订阅到Webhooks API.首先,您需要知道哪些挂钩可供您使用.您可以通过发出GET请求来执行此操作/api/v2/webhooks/
.在响应中,您将找到事件名称,调查和收集器参数.
最后,通过向URL 发出包含以下内容的请求,您订阅了之前列出的一个钩子POST /api/v2/webhooks/subscribe/
:
{
"subscription_url": "http://your-absolute-url.com/hooks/survey_created_callback",
"event": "[EVENT NAME FROM THE HOOKS LIST]",
"survey": "[SURVEY FROM THE HOOKS LIST]",
"collector": "[COLLECTOR FROM THE HOOKS LIST]"
}
Run Code Online (Sandbox Code Playgroud)
201
如果成功创建了挂钩,则对此的响应将是代码409
,如果已存在相同回调URL的webhook,则对代码进行响应.或者其他什么,如果这变坏了:)
您现在可以通过在远程服务上创建调查来测试挂钩,然后观察它在Rails应用程序中的复制.
希望这可以帮助...
归档时间: |
|
查看次数: |
13563 次 |
最近记录: |