开发HTTP函数
本章节通过HTTP函数部署koa框架,更多HTTP详情,请参见创建HTTP函数。
前提条件
- 准备一个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
- 在Linux机器上安装node环境并准备nodejs项目文件。
- 创建项目文件夹。
mkdir koa-example && cd koa-example
- 初始化nodejs项目,下载koa框架,文件夹中会新增node_modules文件夹和package.json、package-lock.json文件。
npm init -y npm i koa
- 创建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。
- 创建bootstrap文件。
- 创建项目文件夹。