使用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解码后再处理。
前提条件
已在本地操作系统中安装Node环境。推荐使用EulerOS环境进行Node.js的依赖包制作。
使用HTTP函数部署Koa框架示例
Koa框架是一个基于Node.js的Web开发框架,主要用于构建高效、可扩展的Web应用。
- 执行以下命令创建项目文件夹。
mkdir koa-example && cd koa-example
- 执行以下命令初始化nodejs项目和下载koa框架。
npm init -y npm i koa
执行成功后,文件夹中会新增node_modules文件夹和package.json、package-lock.json文件。
- 创建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..')
- 准备一个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
- 把所有项目文件和bootstrap文件打包成Zip文件。打包时需注意确保解压后,项目入口文件位于根目录。
图1 打包所有文件
- 登录函数工作流控制台,右上角单击“创建函数”
- 创建一个空白HTTP函数,并将上述Zip文件上传至“代码”页签。
创建成功后即可使用Koa框架自行开发应用,框架提供了处理请求的基础设施,您自定义的应用代码则定义具体的业务逻辑。
相关文档
- 关于Node.js函数开发的更多说明,请参见Node.js函数开发概述。
- 使用Node.js开发事件函数,请参见开发Node.js事件函数。
- 制作Node.js运行时的函数依赖包,请参见为Node.js函数制作依赖包。
- 关于HTTP函数的更多介绍,请参见创建HTTP函数。
- 关于函数开发的更多说明,如函数支持的运行时、函数支持的触发事件、函数工程打包规范以及如何在函数中引入动态链接库,请参见函数开发概述。