更新时间:2024-11-11 GMT+08:00

开发HTTP函数

本章节通过HTTP函数部署koa框架,更多HTTP详情,请参见创建HTTP函数

前提条件

  1. 准备一个bootstrap启动文件,作为HTTP函数的启动文件。举例如下:
    /opt/function/runtime/nodejs14.18/rtsp/nodejs/bin/node $RUNTIME_CODE_ROOT/index.js
    • /opt/function/runtime/nodejs14.18/rtsp/nodejs/bin/node:表示nodejs编译环境所在路径。
    • $RUNTIME_CODE_ROOT:系统变量,表示容器中项目代码存放路径/opt/function/code。
    • index.js:项目入口文件,可自定义名称。

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

    表1 Nodejs语言对应路径

    语言

    路径

    Node.js6

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

    Node.js8

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

    Node.js10

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

    Node.js12

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

    Node.js14

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

  2. 在Linux机器上安装node环境并准备nodejs项目文件。

    Koa Web应用

    1. 创建项目文件夹。
      mkdir koa-example && cd koa-example
    2. 初始化nodejs项目,下载koa框架,文件夹中会新增node_modules文件夹和package.json、package-lock.json文件。
      npm init -y
      npm i koa
    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..')
      • HTTP函数只能绑定APIG/APIC触发器,根据函数和APIG/APIC之间的转发协议,函数的返回合法的http响应报文中必须包含body(String)、statusCode(int)、headers(Map)和isBase64Encoded(boolean),HTTP函数会默认对返回结果做Base64编码,isBase64Encoded默认为true,其它框架同理。相关约束条件请参考Base64解码和返回结构体的说明
      • HTTP函数默认开放端口为8000。
      • Context类中提供了许多上下文方法供用户使用,其声明和功能请参见表1
    4. 创建bootstrap文件。

  1. 把项目文件和bootstrap文件打包成zip包。以koa框架为例: