Halo自定义API接口,对接小程序客户端

很多朋友用 Halo 搭建了博客,又想把它作为内容源接入自己的微信小程序,但 Halo 默认没有专门给小程序用的接口。
这篇教程就带你从零开始,在 Halo 里创建一个自定义 API 接口,并让小程序安全地拿到文章数据。
整个过程会涉及后台配置、权限设置和前端调用,每一步都有明确的操作路径和验证方法。

动手前需要确认的环境和权限

在开始写代码之前,先检查几个基础条件,能避免大部分低级错误。

  • Halo 版本:建议使用 Halo 2.x,因为 2.x 提供了更完整的自定义端点(Custom Endpoint)功能。你可以在 Halo 后台的“关于”或“系统信息”里确认版本,如果版本较低,建议先升级。
  • 管理员账号:你需要一个 Halo 管理员账号,用来创建 API 令牌和配置接口权限。
  • 小程序开发者工具:安装微信开发者工具,并准备好小程序的 AppID 和 AppSecret。
  • 服务器网络:确保小程序服务器可以访问你的 Halo 站点域名,如果 Halo 开启了 HTTPS,小程序也必须使用 HTTPS 请求。

在 Halo 后台创建自定义 API 接口

Halo 2.x 允许通过“自定义端点”功能暴露特定数据。
具体路径是:登录 Halo 后台 -> 左侧菜单找到“插件”或“设置” -> 进入“自定义端点”。
不同主题或版本可能略有差异,如果找不到,请先确认是否安装了官方提供的“自定义端点”插件。

创建接口时,你需要填写几个关键字段:

  • 路径:例如 /apis/custom.mini-program.posts,这是小程序请求的地址后缀。
  • 请求方法:选择 GET,因为小程序通常只读取数据。
  • 权限:选择“公开”或“匿名访问”,否则小程序未登录时无法获取内容。
  • 数据源:可以选择“文章列表”或自定义查询,并设置返回字段,比如 titleslugcoverpublishTimecontent

一个简单的接口配置片段大致如下(具体语法请以你 Halo 后台的提示为准):

{
  "path": "/apis/custom.mini-program.posts",
  "method": "GET",
  "permission": "anonymous",
  "query": {
    "page": 1,
    "size": 10,
    "sort": "publishTime,desc"
  }
}

保存后,Halo 会生成一个可访问的 URL。
你可以在浏览器里直接打开这个 URL,如果返回 JSON 格式的文章数据,说明接口已经生效。

小程序端如何安全地请求这个接口

拿到接口地址后,在小程序里发起网络请求。
微信小程序要求所有请求的域名必须在小程序后台的“开发设置”->“服务器域名”里配置为合法域名。

假设你的 Halo 站点是 https:
//blog.yourdomain.com

接口路径是 /apis/custom.mini-program.posts
那么在小程序 request 中的写法如下:

wx.request({
  url: 'https://blog.yourdomain.com/apis/custom.mini-program.posts',
  method: 'GET',
  success(res) {
    console.log(res.data);
    // 将 res.data 渲染到页面
  },
  fail(err) {
    console.error('请求失败', err);
  }
});

关键点:如果 Halo 接口需要认证,比如用了 Token,那么要在请求头里加上 Authorization
但为了小程序安全,不建议把管理员 Token 放在前端,而是应该让 Halo 接口保持匿名只读,或者通过自己的后端中转。

避坑指南:常见报错与处理

对接过程中很容易遇到几个典型问题,提前了解能省不少时间。

  • 403 Forbidden:说明接口权限没有设为匿名,或者小程序请求时缺少必要头信息。检查 Halo 自定义端点的权限设置。
  • 404 Not Found:接口路径写错,或者 Halo 没有启用自定义端点插件。重新核对后台生成的完整 URL。
  • 小程序提示“不在以下 request 合法域名列表中”:去微信公众平台 -> 开发 -> 开发设置 -> 服务器域名,把 Halo 域名添加进去,注意必须是 HTTPS。
  • 返回数据为空:检查查询条件是否太严格,比如 status 只选了“已发布”,但文章还是草稿状态。

如果遇到跨域问题,Halo 通常已经处理,但如果你用了 CDN 或反向代理,需要确保代理没有过滤掉 Access-Control-Allow-Origin 头。

验证接口是否真正可用

完成配置后,不要急着写复杂页面,先用最简单的方式验证。

  1. 在浏览器无痕模式下打开接口 URL,确认能看到 JSON 数据。
  2. 在小程序开发者工具的“网络”面板中查看请求状态码,200 表示成功。
  3. 在小程序页面的 onLoad 里打印 res.data,确认字段名和你预期的一致。
  4. 如果文章内容包含 HTML 标签,小程序里需要用 rich-text 组件渲染,注意过滤掉不支持的标签。

只要这四步都通过,说明 Halo 自定义 API 接口已经成功对接小程序客户端。
后续你可以根据需要增加分页、分类筛选或搜索参数,但核心思路不变:Halo 提供数据,小程序负责展示。

分享到:
上一篇
Halo CMS对接微信公众号,内容同步推送
下一篇
MCMS代码生成器,自动生成后台管理页面
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意