首页 > 其他分享 >uniCloud云函数概述---普通云函数

uniCloud云函数概述---普通云函数

时间:2024-04-16 22:13:14浏览次数:23  
标签:函数 id --- uniCloud String cookie event 客户端

一、创建普通云函数:

打开项目,找到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

相关文章

  • 【爆款推荐】初中中考阅读理解难题一网打尽!句子结构深度解析+答案揭秘,助你轻松冲刺高
    PDF格式公众号回复关键字:ZKYDT003原文1HowmanychildrendoesSumnerhave?解析Howmanychildren多少孩子,SumnerhaveSumner有,标题问Sumner有几个孩子?文本信息IstoppedbecauseIhadneverseen'ournormal'insuchaplace,"themotherofthreechildr......
  • shell-运算符
    一、算术运算符expr表达式orvar=`expr表达式`1、示例[root@vm-paasscwyfy]#catexpr_demo.sh#!/bin/bashread-p"请输入第一个数字:"aread-p"请输入第二个数字:"becho"a=${a},b=${b}"echo"a+b=`expr${a}+${b}`"echo"a-b=`exp......
  • ETL工具-nifi干货系列 第十三讲 nifi处理器QueryDatabaseTable查询表数据实战教程
    1、处理器QueryDatabaseTable,该组件生成一个SQL查询,或者使用用户提供的语句,并执行它以获取所有在指定的最大值列中值大于先前所见最大值的行。查询结果将被转换为Avro格式,如下图所示: 本示例通过QueryDatabaseTable处理器连接数据库查询表数据,然后连接到LogMessage打印日志......
  • 设备通讯(1)----缓冲区方式(DO_BUFFERED_IO)
    驱动的AddDevice中,若做了如下设置:fdo->Flags|=DO_BUFFERED_IO,则意味着指定该设备为缓冲区方式工作。以ReadFile和WriteFile为例,下面看看这种方式究竟是如何工作的,先看一个概要图,对着图来说明比较容易: 1:上层程序创建用户缓冲区,然后调用ReadFile/WriteFile对设备进行读写操......
  • Parcharm-ModuleNotFoundError: No module named 'request'--解决方案
    问题:在Pycharm中报requestsmodule找不到特别的地方:已经通过“pip3installrequests”的命令安装过requests这个模块,并能顺利运行,但是不能在Pycharm中运行 解决方案如下:1.找到Pycharm中的setting设置,并打开2.找到自己工作的目录下的“PythonInterpreter”-->"+......
  • 吴恩达机器学习-第二课-第二周
    吴恩达机器学习学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。TensorFlow实现神经网络模型训练细节训练步骤与和逻辑回归的比较训练模型分为三步:1.确定f(x)函数2.确定损失函数和代价函数3.通过数据训练寻找最小值详细介绍1.创建模型2.......
  • i-MES生产制造管理系统-老化时间管控
    在生产过程中,产品的可靠性是影响其性能和寿命的关键因素,因此提高产品的可靠性是十分必要的,而老化测试是提高产品可靠性的重要手段之一,老化的时间随着产品不同而变化,因此老化时间管控变得尤为重要! 在MES系统中找到“老化时间”管理的菜单,进进入之后可针对不同的产品编码设定老......
  • 【C#】第 1 天:首个C#程序-Hello World
    首个C#程序-HelloWorld1.输出“HelloWorld!”。Console.WriteLine("HelloWorld!"); 1.Console //一个控制台类型。2.WriteLine //时Console类型中的一个方法。3.string //文本类型,它里面也包含一些和文本相关方法。声明和使用1.输出变量的值stringaFriend="Bill"; /......
  • 01.大数据技术与应用课堂测试2-数据初级分析分类
     一、 原始数据: 二、 地域维度标准化:地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标准行政区划代码由两部分组成,一部分为行政区划编码,六位数字组成,前两位表示省编码,中间两位代表市编码,后两位表示所属市的区或县编码。一部分为行政区划名称......
  • led驱动程序进阶-基于面向对象思想的led驱动模板
    在上一篇文章中编写led驱动程序采用的是最传统的编写方式,这里回顾一下流程就是:给file_operations结构体添加具体的open、read、write、release函数,并实现这些函数的定义,然后定义入口函数并在里面使用这个结构体变量注册驱动、寄存器地址映射、创建设备,然后定义出口函数并进行撤销......