Skip to content

函数使用指南

在快速入门中,我们已经创建了一个简单的函数,现在我们来详细说明一下。

js
export default async function handler(ctx: CloudContext) {
    return "hello word"
}

CloudContext 的类型如下

js
type LinkReturn<T extends string> = 
  T extends `${string}/${string}` ? Promise<ModelStatic<Model<any, any>> | Record<string, any> | Array<any>> :
  T extends `http${string}` ? Promise<any> : never;

interface CloudContext {
    db: (key?: string) => Promise<Sequelize>;
    link: <T extends string>(key: T, ctx: Omit<CloudContext, "link">) => LinkReturn<T>;
    query: Record<string, string>;
    body: Record<string, any>;
    header: Record<string, string>;
    headers: Record<string, string>;
}

ctx.db

ctx.db 用于获取数据库连接,返回值为 Sequelize 实例。key 表示一个数据库,在数据库页面可以进行设置,调用简单。

ctx.link 是内部函数访问机制,支持访问内部函数和外部http请求,返回值任意,当访问外部http请求时,仅支持返回json格式数据

js
// 外部仅支持get、post
ctx.link('get/http://localhost:8080/hello', {query:{}, body: {}, header: {}})
// 内部访问
ctx.link('model/request', ctx) // ctx 是任意对象

ctx.query

ctx.query 用于获取链接params上的参数,返回值为 Record 实例。

ctx.body

ctx.body 用于获取 body 体的参数,返回值为 Record 实例。

ctx.header 和 ctx.headers

这两个对象是等价的,当作为http请求时,会自动携带浏览器端的请求头,返回值为 Record 实例。

内置api接口测试器

api测试器.png

支持npm包安装

npm包安装.png