问题:使用 emacs-web-server 解析 webhook

我正在使用emacs-web-serverngrok从 GitHub 接收 Webhooks。关于设置,我通过 Github 网站上的 Redeliver 按钮从 Github 手动触发请求:

从 GitHub 发送

我正在使用以下代码来处理来自 GitHub 的请求:

(ws-start
 '(((:POST . ".*") .
    (lambda (request)
      (with-slots (process headers pending) request
        (print "# pending start #")
        (print pending)))))
 9005)

emacs-web-server POST的示例可以在这里找到:http://eschulte.github.io/emacs-web-server/POST-Echo.html#POST-Echo

它进来得很好,pendingprinting 在我的 Messages 缓冲区中显示以下内容:

请求

但是我在将有效负载隔离在变量中时遇到了麻烦(即,双线换行后的所有内容:{\"ref\"..等)。我尝试了几个正则表达式;当我在暂存缓冲区中使用它们并粘贴挂起变量的副本时,这些似乎都有效,但在实际有效负载场景中不起作用。据推测,^Ms 与此有关,因为当内容粘贴到另一个缓冲区时它们不存在。如果有人能指出我正确的方向,那将不胜感激。

谢谢!

解答

正如@Rick77 最近询问的那样,盘旋回来。

通过手动读取响应,我能够使请求处理/解析工作。

但是最近我遇到了类似的情况(传出请求除外),并且发现使用'request 和'json 库是一种更简单的方法:

(require 'json)
(require 'request)

(defun get-response-data (url)
  (let* ((res (request url :sync t))
         (data (request-response-data res)))
    (json-read-from-string data)))

https://github.com/ryancrum/json.el

https://tkf.github.io/emacs-request/

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐