ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

5个最小代码示例搞定request.el:GET/POST/PUT/DELETE请求完整手册

5个最小代码示例搞定request.el:GET/POST/PUT/DELETE请求完整手册 5个最小代码示例搞定request.elGET/POST/PUT/DELETE请求完整手册【免费下载链接】emacs-requestRequest.el -- Easy HTTP request for Emacs Lisp项目地址: https://gitcode.com/gh_mirrors/em/emacs-request 想让你的 Emacs 发起网络请求request.el是 Emacs Lisp 生态里经典的轻量级 HTTP 请求库只需一行核心函数就能发出 GET、POST、PUT、DELETE 等任意类型的请求。它自动优先使用系统curl作为后端找不到 curl 时回退到 Emacs 原生的url.el开箱即用无需复杂依赖。本文用 5 个最小代码示例带你快速掌握 request.el 的完整用法。request.el 是什么request.el 的核心只有一个函数request其余都是它的参数。理解这一条整个库就通了。特性说明后端优先curl无 curl 时自动切换url.elurl-retrieve默认编码utf-8二进制数据需显式指定:encoding binary回调风格类似 jQuery.ajax 的:success/:error/:complete主文件request.el核心实现、request-deferred.eldeferred 集成一键安装 request.el在init.el或.emacs中加入 MELPA 源并安装(add-to-list package-archives (melpa . https://melpa.org/packages/))然后执行M-x package-refresh-contents RET M-x package-install RET request RET也可以直接克隆仓库后运行make install仓库中提供了 Makefile 与 Cask 等构建配置。核心 API 速览request 的参数表request的签名是(request URL rest settings)常用参数如下完整文档见 request.el 中request函数定义处的注释约 L332-L360参数类型说明:typestring请求方法GET / POST / PUT / DELETE:paramsalistURL 的?keyval查询参数:datastring / alist请求体数据:headersalist附加请求头:parserfunction解析响应体的函数如json-read:success/:error/:completefunction成功 / 失败 / 无论成败的回调:syncbool为t时阻塞等待请求完成:status-codealist按状态码精确分发回调示例1GET 请求 查询参数最基础的用法——发一个带参数的 GET 请求并用json-read解析响应(request http://httpbin.org/get :params ((key . value) (key2 . value2)) :parser json-read :success (cl-function (lambda (key data allow-other-keys) (message I sent: %S (assoc-default args data))))) 注意回调里的allow-other-keys它能让回调忽略将来新增的参数是官方推荐写法。示例2POST 表单数据POST 请求只需加上:type POST和:dataalist 或 URL 编码字符串等价(request http://httpbin.org/post :type POST :data ((key . value) (key2 . value2)) ;; :data keyvaluekey2value2 ;; 等价写法 :parser json-read :success (cl-function (lambda (key data allow-other-keys) (message I sent: %S (assoc-default form data)))))示例3PUT JSON 请求体发送 JSON 时用json-encode编码数据并显式设置Content-Type头(request http://httpbin.org/put :type PUT :data (json-encode ((key . value) (key2 . value2))) :headers ((Content-Type . application/json)) :parser json-read :success (cl-function (lambda (key data allow-other-keys) (message I sent: %S (assoc-default json data)))))✅ 小贴士若 JSON 中含有非 ASCII 字符请确保设置:encoding utf-8避免中文乱码。示例4DELETE 请求DELETE 最简洁——只需指定:type DELETE其余参数与 GET 相同(request http://httpbin.org/delete :type DELETE :parser json-read :success (cl-function (lambda (key data allow-other-keys) (message I sent: %S (assoc-default method data)))))官方测试 tests/test-request.el 中的request-simple-delete用例L457-L464就是同样模式可作为参考模板。示例5:sync t 阻塞式请求前 4 个示例都是异步的。如果需要等请求完成再往下走加上:sync t(request http://httpbin.org/get :sync t :complete (cl-function (lambda (key response allow-other-keys) (message Done: %s (request-response-status-code response)))))请求完成后即可通过request-response-status-code、request-response-data等访问器函数读取响应对象的详细信息。进阶回调分发与状态码路由request.el 支持 jQuery.ajax 风格的丰富回调分发甚至能按 HTTP 状态码精确路由示例来自 README.rst(request http://httpbin.org/status/418 :parser buffer-string :success (cl-function (lambda (key data allow-other-keys) (when data (message success: %s data)))) :error (cl-function (lambda (rest args key error-thrown allow-other-keys) (message Got error: %S error-thrown))) :complete (lambda (rest _) (message Finished!)) :status-code ((400 . (lambda (rest _) (message Got 400.))) (418 . (lambda (rest _) (message Got 418.)))))这样 2xx、4xx、418 各自走不同逻辑写 API 客户端时非常好用。本地自测内置测试服务器不想依赖外部网站项目自带一个 Flask 测试服务器 tests/testserver.py支持 GET/POST/PUT/DELETE 四种方法并能回显路径、表单、JSON、文件等所有入参配合 tests/request-testing.el 就能在本地闭环调试请求代码。常见问题 FAQQ1没有 curl 能用吗能。request-backend变量会自动检测无 curl 时使用url.el的url-retrieve后端API 完全一致。Q2如何下载二进制文件图片等加:encoding binary并配:parser buffer-string或直接取缓冲区内容。Q3想加自定义 header / 超时怎么办分别使用:headersalist 形式和:timeout秒参数即可均见request函数文档注释。Q4需要 cookie 支持可用request-cookie-jar、request-cookie-alist等辅助函数管理源码位于request.el。小结request.el 的精髓可以浓缩为一句话URL 关键词参数 完整 HTTP 客户端。掌握本文 5 个示例后你可以覆盖日常 90% 的场景GET →:params传查询参数POST →:data传表单/数据PUT →:data:headers传 JSONDELETE → 仅:type DELETE同步场景 →:sync t阻塞等待配合:parser、:status-code与回调三件套request.el 足以支撑你写出干净的 Emacs 网络应用。【免费下载链接】emacs-requestRequest.el -- Easy HTTP request for Emacs Lisp项目地址: https://gitcode.com/gh_mirrors/em/emacs-request创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表