功能介绍
- 扩充内核 api,可自定义 api 服务。
- 代理转发,可转发 6806 或 6808 等端口及远程服务等。
- 运行于 Electron render 进程,因此同时具备获取前端页面和对象的能力,又具有提供 api 服务的能力,还可以直接调用思源内核 api。
- 支持简单认证。
- 支持简单路由和中间件。
- 不依赖 Express/Koa 等框架,所有逻辑均为原生 Node.js 实现。
- 无需安装 Node 环境,直接运行与 js 代码片段中即可,使用门槛低。
- 看似很强大,其实很鸡肋,因为懂开发的不需要,不懂开发的也不会用
。
使用场景
- 需要第三方调用自定义 api 的时候。虽然思源有 websocket,但有些第三方工具可能支持不好,比如 quicker。通过 http 调用的方式更容易扩展。
- 发布服务,隐藏自己想要过滤的 api,实现后端级的安全保障(但需要自己写代码)。
安装
-
下载文件 my-api-server-v5.zip,解压后放于思源工作空间/data/public/文件夹中即可。
-
把下面的代码放到思源 js 代码片段中即可。
{ let serverPort = 6809 // 可选,默认6809端口,也可以在config中配置 import('/public/my-api-server/server.js') }想监控多个端口和服务可以放入到 2 个代码片段中或隔离作用域后执行 2 次。
-
重启思源。
-
测试,可通过访问
http://127.0.0.1:6809/products或http://127.0.0.1:6809/查看,前者是自定义 api,后者是代理 6806 端口。 -
v5 新增支持/?action=xxxx 路由,比如可以通过
http://127.0.0.1:6809/products或http://127.0.0.1:6809/?action=products访问。
目录结构
项目根目录:/data/public/my-api-server/
server.js:服务主入口,负责请求分发和代理转发。router.js:路由表配置,维护 method+path 到 handler 的映射。service/:具体业务处理模块,按资源拆分(如 user.js, product.js)。proxyService/:代理转发处理模块,根据 routeMap 分发处理函数。common.js:通用工具函数(如日志、请求体解析、标准响应)。config.js:端口等基础配置。.github/copilot-instructions.md:开发协作与代码规范说明。README.md:中文文档说明(本文件)。
使用说明
-
启动服务
在思源笔记 js 代码片段中新增以下代码即可:{ let serverPort = 6809 // 可选,默认6809端口,也可以在config中配置 import('/public/my-api-server/server.js') }当运行于 Electron 环境中时,确保
window.siyuan对象可用。
也可命令行运行:node server.js --port=6809注意:当运行于命令行时,失去获取前端的能力。
-
扩展 API
- 在
service/目录新建业务处理文件(如foo.js),导出处理函数。 - 在
router.js添加路由映射,关联到对应 handler。
- 在
-
代理转发
- 修改
config.js中的FORWARD_HOST和FORWARD_PORT,设置代理目标。 - 可在
proxyService/proxyApi.js中自定义过滤或修改的 api 和处理函数。
- 修改
-
调用前端对象和思源自带 API
- 可直接调用前端对象和思源笔记原生 API,实现数据交互。
保活问题
由于 render 进程执行,长期停留后台可能停止服务(暂未发现有失活问题)。
如果发生,可能的解决办法有:
- 保持与主进程通信(比如 ws 通信,如果需要的话)
- node 命令执行(将失去获取前端的能力)
调试
由于直接在思源渲染进程执行,因此可以通过思源的开发者工具直接调试或打印。
注意打印结果在思源控制台,不是浏览器控制,因为这是服务器结果打印。
主服务器入口在 public 文件夹下

动态加载的代码在无网域

然后可以把调试结果打印到控制台或通过源码断点调试就好了。
手把手教程
注意事项
- 支持运行于 pc 端的 Electron 环境,也支持运行与命令行下。但运行于命令行下时,失去获取前端的能力。
- 认证仅对 token 进行简单对比,如果有需要,请自行扩展认证方式。
- 本项目仅仅是实验或 demo,并未严格测试,请勿用于生产环境。
免责声明
本项目仅供学习与个人扩展使用,所有功能均依赖于思源笔记环境。请勿用于非法用途和生产环境,因使用本项目造成的任何后果,开发者不承担任何责任。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于