You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Neutralinojs服务端接收外部HTTP请求并配置自定义接口?

Neutralinojs 配置自定义HTTP接口的解决方案

Neutralinojs 内置的静态资源服务支持通过官方提供的请求拦截能力自定义接口路由,不需要额外引入第三方服务,具体实现步骤如下:


前置配置

首先修改neutralino.config.json配置文件,开启服务请求拦截权限:

{
  "server": {
    "enableServer": true,
    "port": 5050,
    "allowHttpRequestHook": true,
    // 如果需要允许外部设备访问,新增以下两项配置
    "bindAddress": "0.0.0.0",
    "accessControlAllowOrigin": "*"
  }
}

配置修改后需要重启Neutralinojs应用生效。


实现自定义接口逻辑

在应用的前端入口JS文件中注册serverRequest事件监听器,拦截所有进入内置服务的HTTP请求,匹配自定义路径后返回自定义响应:

// 等待Neutralinojs初始化完成后注册事件
Neutralino.init();
Neutralino.events.on('serverRequest', async (req) => {
  // 匹配自定义接口路径和请求方法
  if (req.path === '/myEndpoint' && req.method === 'GET') {
    // 自定义业务处理逻辑
    const respContent = {
      code: 200,
      msg: "请求成功",
      data: "来自Neutralinojs自定义接口的响应内容"
    };
    // 返回自定义响应
    await Neutralino.server.respond(req.id, {
      status: 200,
      headers: {
        "Content-Type": "application/json",
        "Access-Control-Allow-Origin": "*"
      },
      body: JSON.stringify(respContent)
    });
    return;
  }
  // 处理POST请求示例
  if (req.path === '/myEndpoint' && req.method === 'POST') {
    // 解析请求体,req.body为Uint8Array格式
    const reqBody = JSON.parse(new TextDecoder().decode(req.body));
    console.log("收到请求参数:", reqBody);
    await Neutralino.server.respond(req.id, {
      status: 200,
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ status: "ok", receive: reqBody })
    });
    return;
  }
  // 不匹配自定义路径的请求走默认静态资源逻辑,正常返回前端页面、资源等
  await Neutralino.server.respondDefault(req.id);
});

复杂场景适配方案

如果你的自定义接口逻辑非常复杂,涉及大量数据库操作、异步任务处理等场景,也可以启动独立的后端服务作为子进程运行:

  • 通过Neutralino.os.spawnProcess启动你熟悉的后端服务(比如Node.js Express、Python FastAPI等),监听非冲突端口如5051
  • 在serverRequest事件钩子中匹配自定义路径,将请求转发到后端服务端口,拿到响应结果后再返回给请求方

内容的提问来源于stack exchange,提问作者rince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:18:01