一、创建普通云函数:
打开项目,找到uniCloud / cloudfunctions ,右击cloudfunctions文件夹,选择“新建云函数/云对象”
创建好的云函数包含二个文件:
index.js //云函数代码文件
package.json //云函数配置文件
二、普通云函数代码模板:
'use strict'; //自定义变量 const success = { success: true } const fail = { success: false } //引入外部模块 const createPublishHtml = require('./createPublishHtml') //main是代码入口 exports.main = async (event, context) => { //event为客户端上传的参数
//接收post提交的base64数据处理方式:以接收text/xml格式的post请求为例
let body = event.body
if(event.isBase64Encoded){
body = Buffer.from(body, 'base64').toString('utf8') // 将base64格式的xml内容转为xml字符串
}
console.log('event : ', event) //接收GET提交的JSON数据处理方式 let res = {}; let params = event.data || event.params; switch (event.action) { case 'createPublishHtml': res = createPublishHtml(params.id) break; } //返回数据给客户端 return res };
普通云函数没有_before,_after, _timing 方法。
云函数main中的参数 event、context说明:
event:
- event 可获取调用时提交过来的参数,比如 event.id
- 如果uni-id登陆时提交请求,此时event.uniIdToken可以获取uni-id 的 token,所以不要在客户端提交uniIdToken参数。
context:
- context包含了本次请求的上下文,比如客户端的ip、ua、appId等信息,可获取属性如下:
{ SPACEINFO: { //服务空间信息 spaceId: //String 服务空间id provider: //String 服务空间供应商:alipay|aliyun|tencent useOldSpaceId: //boolean 当前获取的服务空间id是否为迁移前的服务空间id }, SOURCE: // String 云函数调用来源,(https://doc.dcloud.net.cn/uniCloud/cf-callfunction.html#context-source)
//来源返回值如下:
//client 客户端callFunction方式调用
//http 云函数url化方式调用
//timing 定时触发器调用
//function 由其他云函数callFunction调用
//server由uniCloud管理端调用,HBuilderX里上传并运行
FUNCTION_NAME: //String 获取云函数名称 FUNCTION_TYPE: //String 获取云函数类型,对于云函数来说,这里一定会返回cloudfunction CLIENTIP: //String 客户端IP。如果调用来源是其他服务器,会返回调用方的ip (客户端其它信息,比如浏览器类型。只有使用uni-app客户端以callFunction方式调用才能获取,其它方式无法获取,比如url方式请求云函数时只能获取客户端IP) CLIENTUA: //String 客户端userAgent。注意非本地运行环境下客户端getSystemInfoSync也会获取ua参数并上传给云函数,但是云函数会从http请求头里面获取ua而不是clientInfo里面的ua uniIdToken: //Stirng 客户端uni-id token字符串 requestId: // String当前请求id
PLATFORM: // String ,app|app-plus 来自平台
}
在URL化的场景无法获取客户端平台等信息,但是可以获取客户端IP、客户端userAgent
三、普通云函数调用方法:
在前端或者云端都是采用:uniCloud.callFunction 调用云函数。
uniCloud.callFunction 原型:
uniCloud.callFunction({ name: '' //String 云函数名称,必需 data: {} //Object 传递的参数,可选 })
请求返回数据结构:
{ result: //Object 云函数中代码return的返回结果 requestId: //String 云函数请求序列号,用于错误排查,可以在uniCloud web控制台的云函数日志中查到 header: //Object 服务器header信息 errCode: //Number | String 服务器错误码 success: //bool 执行是否成功 }
四、普通云函数URL时,获取cookies
首先需要安装cookie库,可以通过npm install cookie 安装
代码模板:
'use strict'; //引入cookie const cookie = require('cookie') exports.main = async (event, context) => { const cookieData = cookie.parse(event.headers.cookie || '') //获取客户端的cookie数据 //设置cookie到客户端(设置cookie的有效期) const cookieOptions = { //具体参数请查阅 https://www.npmjs.com/package/cookie maxAge: 60 * 60 * 24 * 7,//一周 path:"/" } const setCookieData = cookie.serialize('app', 'appName', cookieOptions) //写入cookie数据 return { statusCode: 200, headers: { 'content-type': '返回数据类型', 'set-cookie': setCookieData // 在headers内返回set-cookie用于设置客户端cookie }, body: '返回数据' } };
标签:函数,id,---,uniCloud,String,cookie,event,客户端 From: https://www.cnblogs.com/wm218/p/18138491