云函数 API
云函数模板
每个云函数都需要 module.exports
一个 async
函数,这个函数包含 params
和 context
两个变量。例如:
module.exports = async function(params, context) {
return {
message: 'Hi, AirCode.',
};
}
module.exports = async function(params, context) {
return {
message: 'Hi, AirCode.',
};
}
params
访问云函数时的请求数据,根据请求方法不同可能代表不同的数据。
POST 请求时
{Object | string | Buffer}
:POST 请求时,params
代表 Request Body 的内容,具体类型由 Content Type 决定:
Content Type | params 数据类型 |
---|---|
application/json | Object |
multipart/form-data | Object |
text/plain | string |
application/x-www-form-urlencoded | Object |
其他(例如 application/octet-stream ) | Buffer |
参考教程
GET 请求时
{Object}
:GET 请求时,params
是由 Query String 转换的键值对象。
提示
对象中的值为 string
或 Array<string>
类型,例如 ?a=1
时 params.a === '1'
。
参考教程
context
请求的上下文,同时也包含一些辅助方法。
context.headers
const contentType = context.headers['content-type'];
const myCustomHeader = context.headers['x-my-header'];
const contentType = context.headers['content-type'];
const myCustomHeader = context.headers['x-my-header'];
{Object}
:获取 HTTP 请求的 Headers,为键值对形式。
提示
对象中的键均为小写字母,例如应该是 context.headers['content-type']
而非 context.headers['Content-Type']
。
context.method
{string}
:获取 HTTP 请求的 Method,值为大写字母,例如 'POST'
、'GET'
。
context.request
{Request}
:Node.js request 对象。
context.req
context.request
的缩写。
context.response
{Response}
:Node.js response 对象。
context.res
context.response
的缩写。
context.path
// /hello?hi=aircode
const path = context.path;
// => /hello
// /hello?hi=aircode
const path = context.path;
// => /hello
{string}
获取 HTTP 请求的完整 path。
context.url
// /hello?hi=aircode
const url = context.url;
// => /hello?hi=aircode
// /hello?hi=aircode
const url = context.url;
// => /hello?hi=aircode
{string}
获取 HTTP 请求的完整 URL,包括 path 和 query 字符串。
context.protocol
{string}
获取 HTTP 请求的协议,在 AirCode 中为 https
。
context.query
// ?hello=world&abc=xyz&abc=123
const hello = context.query.hello;
// => 'world'
const abc = context.query.abc;
// => [ 'xyz', '123' ]
// ?hello=world&abc=xyz&abc=123
const hello = context.query.hello;
// => 'world'
const abc = context.query.abc;
// => [ 'xyz', '123' ]
{Object}
:获取 HTTP 请求的 Query String 转换的键值对象,在 GET 请求时与 params
相同。
提示
对象中的值为 string
或 Array<string>
类型,例如 ?a=1
时 context.query.a === '1'
。
context.cookies
{Object}
: Get the cookies of the HTTP request in the form of key-value pairs.
提示
对象中的值为 string
类型, 如果客户端在 cookie 中存了 JSON 字符串,你需要自己调用 JSON.parse
解析。
context.trigger
{string}
:获取云函数触发调用的来源,包含以下值:
取值 | 调用来源 | 参考教程 |
---|---|---|
'HTTP' | 通过 HTTP/HTTPS 的形式调用 | 调用云函数 |
'SCHEDULE' | 通过配置的定时任务调用 | 定时任务 |
'DEBUG' | 通过在线调试调用 | 在线调试云函数 |
context.set(field, value)
context.set('content-type', 'application/json');
context.set('x-abc-header', 'hello world');
context.set('content-type', 'application/json');
context.set('x-abc-header', 'hello world');
设置返回的 HTTP Response Headers 信息。
参数
{string} field
:要设置的 Response Header 的键{string} value
:要设置的 Response Header 的值
context.remove(field)
context.remove('x-abc-header');
context.remove('x-abc-header');
删除对应 field
的 HTTP Response Header 信息,若不存在该 field
则不会执行任何操作。
参数
{string} field
:要删除的 Response Header 的键
context.setCookie(name, value[, options])
context.setCookie('token', 'aircode', { expires: new Date(Date.now() + 24 * 60 * 60 * 1000), httpOnly: true });
context.setCookie('token', 'aircode', { expires: new Date(Date.now() + 24 * 60 * 60 * 1000), httpOnly: true });
将名为 name
的 cookie 值设为 value
。
参数
{string} name
:要设置的 cookie 的名称。{string} value
:要设置的 cookie 值。{object} options
:cookie 选项。
具体的 options
选项参考 express response cookie
context.clearCookie(name[, options])
context.clearCookie('token', { path: '/admin' });
context.clearCookie('token', { path: '/admin' });
将名为 name
的 cookie 值清空。
参数
{string} name
:要清除的 cookie 的名称。{object} options
:cookie 选项。
context.redirect(url[, code])
context.redirect('https://aircode.io');
context.redirect('https://aircode.io');
强制跳转到指定 URL,状态码为 code
,默认值 302。
参数
{string} url
:要跳转到的网址。{number} code
:跳转时的 HTTP Status Code,默认值为302
。
context.status(code)
context.status(201);
context.status(201);
用于设置返回的 HTTP Status Code 信息。
提示
默认情况下函数执行成功返回的 Status Code 为 200
,执行失败返回 500
。
参数
{number} code
:要设置的 HTTP Status Code,可以设置的值参考:Wikipedia - List of HTTP status codes