跳到主要内容

添加 APIs 自定义方法

一些用户级别的 APIs 支持添加自定方法

方法入参 ​

入参 即用于描述上述函数 params 的结构. 若函数无参数, 则不填写.

在微搭应用编辑器中使用数据源时, 会使用到数据源方法 入参 中描述的结构信息, 比如:

  1. 数据源变量的定义中, 会根据入参提示的结构生成变量的配置表单(提示出字段的中文名, 根据不同类型显示不同的表单控件)
  2. 表单容器关联数据源方法后, 会根据入参结构信息生成完整的表单, 如: 入参中 字段名称 会变成表单输入框的 字段标题, 入参中字段的 数据类型 可能会用于生成不同类型的输入框(手机号输入框/邮件输入框/开关选择器等), 入参中 枚举 信息会用于生成 多选输入框 或者下拉选框, 等等.

以上只是举例说明, 数据源方法入参在微搭应用编辑器中的使用场景很多, 故在填写 入参 时信息提供的越完整, 在微搭应用编辑器中使用时则越方便.

公共变量 ​

公共变量提供了一种跨方法的变量调用方式,可支持在多个APIs中进行引用,一般适用于静态变量如APIToken,ClientID等常量值,可以使用模板{{ }}方式引用。 例如设置公共变量ClientId, 使用{{vars.ClientId}}形式引用。

方法类型 ​

数据源方法根据实现方式, 分为两种:

HTTP请求 ​

HTTP请求底层也基于云开发的云函数能力封装, 提供了可视化、快速接入第三方 HTTP API 的功能.

HTTP 配置中配置的是 HTTP 请求底层的请求参数, 在配置 URL、 Query 和 Headers 的 value 、Body(仅请求方法Method为 POST 和 PUT时可配置) 可以使用模版 {{ }} 方式引用下述字段:

云函数 ​

云函数是一种特殊的Javascript函数, 底层基于 云开发的云函数能力封装, 最终会运行在服务器端的 Nodejs 10.15 环境中, 可以通过函数的 context参数来访问 云开发node sdk 的所有能力。

云函数编写需注意以下几点:

下边是为自建数据源添加自定义的创建方法的示例代码:

假设该自建数据源有两个自定义数据源字段 name、email, 以下代码将对参数进行校验, 并限制只能使用 qq 邮箱, 并最后返回新记录的ID

自定义代码 context ​

context 为低码向云函数提供的上下文对象, 里面提供了操作数据库、调用云开发云函数的对象以及一些有用的环境变量.

参数类型必须说明
cloudbasetcb云开发node sdk 对象, 即 import tcb from '@cloudbase/node-sdk'; 引入的 tcb, 使用文档
apptcb.CloudBase云开发 node sdk 初始化后返回的 app 对象, 即 const app = tcb.init({...}) 得到的 app. 初始化默认使用当前低码使用的云开发环境相关参数进行初始化.可使用 app 直接调用 云开发云函数及存储相关能力(如app.callFunction({...})app.uploadFile({...})), 使用文档
auth云开发鉴权对象上述 app.auth() 返回得到的 auth 对象, 可用于直接调用鉴权相关的能力如(如 auth.getUserInfo(), auth.getEndUserInfo() 等等), 使用文档
database云开发数据库对象云开发 node sdk 的数据库对象, 即 app.database() 返回的对象. 可使用 database 获取集合的引用(database.collection(('<collection-name>')), 访问指令对象(database.command)等等. 使用文档
collection云开发数据库集合对象当前数据源关联的数据库表的引用对象(云开发 node sdk 的集合引用对象), 仅自建数据源才有该属性, 即 context.database.collection(context.env.dataSourceFullName) 返回的对象. 可直接使用该对象当前数据源的数据库表进行读写操作, 使用文档
env环境变量具体请参考 环境变量
httpAuthauth处理对象仅使用非空白模版创建的第三方数据源有该对象, 具体使用可参考如何为使用模版创建的第三方数据源集成新的方法
vars对象当前数据源的公共变量

环境变量 ​

参数类型必须说明
openIdstring微信openId,非微信授权登录则空
fromOpenIdstring微信中, 多个小程序共享同一个环境时(即一个微搭环境绑定了多个小程序), 来源小程序的用户 openId, 实际使用时应当优先使用该值
currentOpenIdstring当多个小程序共享同一个环境时(即一个微搭环境绑定了多个小程序), 若请求来自于共享的小程序, 则 currentOpenId 为 上述的 fromOpenId, 否则为 openId
appIdstring微信appId,非微信授权登录则空
fromAppIdstring微信中, 多个小程序共享环境时(即一个微搭环境绑定了多个小程序), 来源小程序的appId, 实际使用时应当优先使用该值
currentAppIdstring当多个小程序共享同一个环境时(即一个微搭环境绑定了多个小程序), 若请求来自于共享的小程序, 则 currentAppId 为 上述的 fromAppId, 否则为 appId
uidstringtcb用户唯一ID
customUserIdstring开发者自定义的用户唯一id,非自定义登录则空
isAnonymousboolean是否为匿名用户
dataSourceNamestring数据源标识, 用户在数据源管理中创建的数据源才有该属性
dataSourceFullNamestring数据源完整名称, 为部署后底层(云函数名称/数据库表名)实际使用的标志
envIdstring云开发环境ID
isPreviewboolean是否为 体验环境, 开发者一般不需要使用改信息. 详见下方 环境说明
envTypeprod pre环境类型, pre: 体验环境, prod: 正式环境; 开发者一般不需要使用改信息. 详见下方 环境说明

环境说明 ​

微搭生成出的应用分为两种:

体验应用正式应用 调用的数据源及微搭后端支撑服务的数据则是互相隔离、互不影响的, 分别会调用到不同的后端环境:

用户在微搭的数据源管理中, 新建/编辑保存数据源的时候, 则会自动更新 体验环境 的数据源. 当数据源测试验证通过后, 点击数据源管理中的 立即发布 按钮则会将数据源更新至 正式环境.

方法测试 ​

数据源的方法(http请求及云函数)配置好后, 使用方法测试进行测试验证. 在「提交参数」中填写测试使用的参数, 点「运行测试」即可测试, 在测试输出的结果中可以看到方法运行的日志信息. 测试通过后, 点击 出参映射 即可快速填写 方法出参

在编写云函数的时候, 可以代码中使用 console.log 来输出日志, 在方法测试的「日志」中可以查看到日志信息.

方法出参 ​

云函数代码最后返回的结果即为函数出参.

在微搭应用编辑器中使用数据源时, 会使用到数据源方法出参中描述的结构信息, 比如:

  1. 数据源变量会使用关联的数据源方法的出参生成示例数据
  2. 表格关联数据源方法后, 会根据出参结构信息生成表格的表头信息

以上只是举例说明, 数据源方法出参在微搭应用编辑器中的使用场景很多, 故在填写 出参 时信息提供的越完整, 在微搭应用编辑器中使用时则越方便.

HTTP方法出参中的字段映射 ​

在HTTP方法中, 使用 方法测试 的出参映射后, 填充的出参结构与HTTP请求原始返回结果结构一致.

HTTP方法的出参提供了 字段映射 的功能, 可对最终前端应用拿到的数据结构进行调整:

修改 字段映射 需要注意以下几点:

常见问题 ​

如何在云函数中使用第三方依赖 ​

目前在云函数中可以使用 request@cloudbase/js-sdk 这两个内置库. 暂时未提供使用其他依赖的方式.

直接使用 node 函数 require 引入相关依赖即可, 如:

如何在云函数中发起 HTTP 请求 ​

可借助npm 包 request 来实现, 具体使用可参考下边代码:

如何为使用模版创建的第三方数据源集成新的方法 ​

在创建外部数据源时, 若使用非空白模版来创建, 则在该数据源云函数的 context 上会多出 httpAuth 对象. 通过 context.httpAuth 对象, 可以访问该类型外部数据源的认证信息.

context.httpAuth 类型定义如下:

参数类型必须说明
getAuthData函数获取认证认证信息函数, 定义为 (requestConfig: IRequestConfig) => Promise<IAuthData>, requestConfig 即为 request 库请求的参数配置, 至少应当包含 uri, method 字段. IAuthData 认证信息
transformResponse函数转换响应结果, 定义为 (body: any, response: RequestResponse) => Promise<Record<string, any>>. 该方法可能不存在, 使用时应做判断. 部分第三方数据源请求的结果会采用类似 {code, data, message} 结构(如腾讯文档) 将最终业务结果(包括业务成功/失败)包裹一层或返回的结构不够规范, 此时即可使用 transformResponse 对返回的结果进行统一转换, 业务调用失败则抛出错误, 业务调用成功则返回最终结果

IAuthData ​

下述除 authInfo外的字段均使用 authInfo 构造而来, 为方便使用而封装, 亦可自行阅读第三方官方接口文档来构造.

参数类型必须说明
authInfoobject后台token接口返回的原始认证信息, 不同类型的外部数据源拿到认证信息结构并不一致, 具体请参考 腾讯会议认证信息, 腾讯文档认证信息
uristring转换后的请求地址 uri, 如果有返回该字段, 应使用该字段作为最终请求的URL
headersobject公共请求头, 包含认证需要 accessToken 等其他公共请求头(不同数据源会有所差异). 若返回该字段, 则应与原有header 合并
bodyobject公共的body参数, 比如腾讯会议的 userid 字段. 若返回该字段, 则应与原有 body 合并
qsobject公共查询字符串. 若返回该字段, 则应与原有 qs 合并

腾讯会议认证信息 ​

参数类型必须说明
AccessTokenstring腾讯会议access_token
OpenIdstring腾讯会议openid, 即接口中需要使用的 userid

腾讯文档认证信息 ​

参数类型必须说明
AccessTokenstring腾讯文档 access_token
ClientIdstring腾讯文档应用 id
OpenIdstring用户openid
TokenTypestring用户token类型
Scopestring用户授权范围

自定义云函数示例:

/**
* 创建腾讯会议, 官方接口文档 https://cloud.tencent.com/document/product/1095/42417
*/
const request = require('request');

/** 依据 http状态码 判断请求是否成功 */
function isSuccessStatusCode(code) {
return code >= 200 && code < 300;
}

module.exports = async function (params, context){
const { subject, type, start_time, end_time, password } = params;
// request 请求配置信息
const requestConfig = {
uri: 'https://api.meeting.qq.com/v1/meetings',
method: 'POST',
body: {
instanceid: 1,
subject,
type,
start_time: `${Math.floor(start_time / 1000)}`,
end_time: `${Math.floor(end_time / 1000)}`,
password,
},
// 将 json 为 true, 响应结果的 body 会被自动转换为对象,
// 在POST请求中, 也会自动设置将 Content-Type 设置为 application/json
json: true
};
// 获取认证信息
const authData = await context.httpAuth.getAuthData(requestConfig);
// 合并配置信息
const finalRequestConfig = mergeAuthData(requestConfig, authData);
// params 即为入参定义的结构, 可以在 request 的请求配置中使用 params
return new Promise(function (resolve, reject) {
// 注意: request 的回掉函数为 async 函数, 因函数内有一个 await 调用
request(finalRequestConfig, async function (err, response, body) {
if (err) return reject(err);
if (!isSuccessStatusCode(response.statusCode)) {
// 失败时, body 中会包含详细错误信息
return reject(new Error(`request failed: code: ${response.statusCode}, msg: ${JSON.stringify(body)}`));
}
let result = body
// 数据源实际未针对 腾讯会议 提供 transformResponse, 下边这段代码亦可以去掉
if (context.httpAuth.transformResponse) {
result = await context.httpAuth.transformResponse(body, response);
}
// 成功时 body 为空
return resolve(result);
}
);
});
}

/**
* 将request 请求配置与 IAuthData 中的进行合并
*/
function mergeAuthData(requestConfig, authData) {
const newConfig = Object.assign({}, requestConfig);
if (authData.uri) {
newConfig.uri = authData.uri;
}
if (authData.body) {
if (requestConfig.form) {
newConfig.form = Object.assign(newConfig.form || {}, authData.body);
} else if (!newConfig.body || typeof newConfig.body === 'object') {
newConfig.body = Object.assign(newConfig.body || {}, authData.body);
// 再次设置 contentType 为json, 避免 requestConfig.body 为空时未设置 contentType 的问题
newConfig.json = true;
}
}
if (authData.headers) {
newConfig.headers = Object.assign(newConfig.headers || {}, authData.headers);
}

if (authData.qs) {
newConfig.qs = Object.assign(newConfig.qs || {}, authData.qs);
}
return newConfig;
}

内置第三方数据源的官方API文档 ​

腾讯文档:

目前微搭仅接入了 sheet 相关的接口, 可根据接口文档接入其他其他API.

腾讯会议:

微搭采用 OAuth2.0 方式接入的腾讯会议, 目前只有会议管理相关API支持 OAuth2.0 方式调用, 会议管理相关API也已全部内置进会议的数据源模版中.
会议管理相关API的参数非常丰富, 为方便用户使用, 微搭侧封装时仅提供了必填的常用参数. 若需要使用微搭模版中未支持的参数, 可参考腾讯会议官方API文档来修改会议数据源中对应方法的封装.

聚圣源我为红领巾添光彩多名原告起诉同一被告时尚女装店名起名辽宁号航母舰长网络小说排行榜完本属牛宝宝起名宜用名字男孩带恒的起名层层加码大英博物馆镇馆之宝山同个人先进事迹范文大中小学陆续开学鼠年宝宝起名张姓郁达夫故都的秋超人:钢铁之躯诗词在线姓顾的男人起名女宝宝起名带金水的名字古代男孩子起名ps3魂斗罗给物业公司公司起个名字公司起名网站源码学校体育馆起名合适起名字龙起名他比晚风还温柔访问升级每日开放式基金净值查询谷澍电视剧天字一号淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化