更新时间:2025-08-05 GMT+08:00
分享

使用Node.js开发HTTP函数

本章节以通过HTTP函数部署Koa框架为例,指导您使用Node环境开始开发函数。

约束与限制

  • HTTP函数只能绑定APIG/APIC触发器,根据函数和APIG/APIC之间的转发协议。

    函数的返回合法的http响应报文中必须包含body(String)、statusCode(int)、headers(Map)和isBase64Encoded(boolean),HTTP函数会默认对返回结果做Base64编码,isBase64Encoded默认为true,其它框架同理。

  • HTTP函数默认开放端口为8000。
  • 通过APIG服务调用函数服务时,即使用APIG触发器时,isBase64Encoded的值默认为true,表示APIG传递给FunctionGraph的请求体body已经进行Base64编码,需要先对body内容Base64解码后再处理。
    函数必须按以下结构返回字符串。
    {
        "isBase64Encoded": true|false,
        "statusCode": httpStatusCode,
        "headers": {"headerName":"headerValue",...},
        "body": "..."
    }

前提条件

已在本地操作系统中安装Node环境。推荐使用EulerOS环境进行Node.js的依赖包制作。

使用HTTP函数部署Koa框架示例

Koa框架是一个基于Node.js的Web开发框架,主要用于构建高效、可扩展的Web应用。

  1. 执行以下命令创建项目文件夹。
    mkdir koa-example && cd koa-example
  2. 执行以下命令初始化nodejs项目和下载koa框架。
    npm init -y
    npm i koa

    执行成功后,文件夹中会新增node_modules文件夹和package.json、package-lock.json文件。

  3. 创建index.js文件,在index.js文件中引入Koa框架,Koa框架的更多使用方法可参考Koa指南
    代码示例:
    const Koa = require("koa");
    const app = new Koa();
    const main = (ctx) = >{
        if (ctx.request.path == ("/koa")) {
            ctx.response.type = " application/json";
            ctx.response.body = "Hello World, user!";
            ctx.response.status = 200;
        } else {
            ctx.response.type = " application/json";
            ctx.response.body = 'Hello World!';
            ctx.response.status = 200;
        }
    };
    app.use(main);
    app.listen(8000, '127.0.0.1');
    console.log('Node.js web server at port 8000 is running..')
  4. 准备一个bootstrap启动文件,作为HTTP函数的启动文件。文件内容如下:
    /opt/function/runtime/nodejs20.15/rtsp/nodejs/bin/node $RUNTIME_CODE_ROOT/index.js
    • /opt/function/runtime/nodejs20.15/rtsp/nodejs/bin/node:表示nodejs编译环境所在路径。
    • $RUNTIME_CODE_ROOT:系统变量,表示容器中项目代码存放路径/opt/function/code。
    • index.js:3创建的项目入口文件,可自定义名称。

    目前支持的Nodejs语言和对应的路径请参见表1

    表1 Nodejs语言对应路径

    语言

    路径

    Node.js 6

    /opt/function/runtime/nodejs6.10/rtsp/nodejs/bin/node

    Node.js 8

    /opt/function/runtime/nodejs8.10/rtsp/nodejs/bin/node

    Node.js 10

    /opt/function/runtime/nodejs10.16/rtsp/nodejs/bin/node

    Node.js 12

    /opt/function/runtime/nodejs12.13/rtsp/nodejs/bin/node

    Node.js 14

    /opt/function/runtime/nodejs14.18/rtsp/nodejs/bin/node

    Node.js 16

    /opt/function/runtime/nodejs16.17/rtsp/nodejs/bin/node

    Node.js 18

    /opt/function/runtime/nodejs18.15/rtsp/nodejs/bin/node

    Node.js 20

    /opt/function/runtime/nodejs20.15/rtsp/nodejs/bin/node

  5. 把所有项目文件和bootstrap文件打包成Zip文件。打包时需注意确保解压后,项目入口文件位于根目录。
    图1 打包所有文件
  6. 登录函数工作流控制台,右上角单击“创建函数”
  7. 创建一个空白HTTP函数,并将上述Zip文件上传至“代码”页签。

    创建成功后即可使用Koa框架自行开发应用,框架提供了处理请求的基础设施,您自定义的应用代码则定义具体的业务逻辑。

相关文档

相关文档