在Hapi.js中处理webhook API的最佳方法是什么?

时间:2015-04-10 19:48:35

标签: webhooks hapijs

常见的webhook风格API实践是让API使用者接收webhook请求,使用204 No Content响应,关闭连接,然后处理请求。 Hapi.js直到nextTick才发送回复对象,这意味着处理函数必须返回。

将请求处理分离为单独的函数并使用nextTick调用它仍然会导致在发送回复对象之前进行处理。 setTimeout有效,但这会对性能产生负面影响。

Hapi的请求扩展似乎是一个选项,但无论路径如何都附加到所有请求,这会给其他请求增加不必要的开销。

Express.js有一个立即发送响应的response.send()方法。理想情况下,Hapi会有类似的东西。

2 个答案:

答案 0 :(得分:0)

解决方案是使用setImmediate进行响应发送和连接关闭后应发生的任何处理。 Hapi在reply上发送了nextTicksetImmediate事件后将处理nextTick个事件。

参见示例:https://gist.github.com/jeremiahlee/3689e8b4d1513c375b1e

答案 1 :(得分:-1)

  

(...)表示处理函数必须返回。

你确定吗?你有没有试过回复()。代码(204);在处理程序的开头,处理程序的逻辑之前?

server.route({
  method: '...',
  path: '...',
  handler: function(request, reply){
    reply().code(204);
    
    // All the logic here...
  }
});