Python调用腾讯云函数传递json数据

news2024/11/20 23:37:07

前言

  有些时候有一些公共的方法,需要放在服务器上,在不同的电脑上使用。但是我们有没有自己的服务器,所以考虑将公共的方法放在腾讯云、华为云、阿里云、百度云等云平台上,方便在不同的电脑上复用。

  我们这里使用的是腾讯云,并且函数的编程语言使用的是python,调用语言也是用的python。这里要特别说明一下,我们的函数不管是用什么语言写的,都可以用python进行调用,和语言是没有任何关系的,反之用python写的函数,也可以用任何语言调用。

一、开通腾讯云函数功能

1、首先进入腾讯云官网,注册一个自己的账号,并且实名验证通过,官网如下:https://cloud.tencent.com/

2、在搜索框输入云函数,进入云函数控制台,如图:
在这里插入图片描述

3、点击 函数服务 ,点击新建,进入新建云函数页面,如图:
在这里插入图片描述

4、首先是基础配置,输入云函数的一些信息,函数类型选择事件函数、函数名称自己填、地域我这里选择广州,看自己实际需求、运行环境选择 python 3.7、时区选择北京时间,如图:
在这里插入图片描述

5、函数代码先默认,后面在回来改。

6、日志配置勾选启用,方便查看每一次的调用情况,如果说用户角色没有权限的话,可以点击他给我快捷链接过去配置权限即可。

7、高级配置默认即可,也可以自己看需求自己配置。

8、触发器配置先默认不配置,后面在配置。

9、勾选同意、点击完成,云函数创建完成,如图:
在这里插入图片描述

10、双击进入函数配置页面,点击触发器,我们要添加一个触发器,否则无法通过url来调用云函数,,点击创建触发器,如图:
在这里插入图片描述

配置和我这里一样即可,这里要特别注意两点:
(1)触发方式:要选择API网关触发,也就是通过url调用(如果说没有权限,按照他给的链接点进去授权即可)
(2)集成响应:这个一定要勾选,否则无法传递json格式的数据
配置好之后,点击提交。
在这里插入图片描述

等待十几秒,触发器创建完成,如图:
在这里插入图片描述

最下面的访问路径就是我们调用云函数的url链接,直接拿到浏览器中进行访问,会显示访问错误,如图:
在这里插入图片描述

  因为我们设置的是传递json格式的数据,而我们的代码返回的是一个 Hello World 字符串,所以会访问错误。如果我们在创建触发器的时候,取消勾选 集成响应 ,此时就会正常返回 字符串不会报错。

  到这里,云函数就创建完成了

二、编写云函数代码

  每个人的业务逻辑都不一样,这里没什么好说的,我主要说一下,如何拿到本地传递过来的json数据,并且返回json数据给本地。

  我们这里模拟接收到用户登录传递过来的用户名和密码,判断是否正确。

2.1 获取本地传来的json数据

  我们在本地python代码中是通过requests库来调用腾讯云函数,所以传递过来的参数肯定是放在请求头的 body当中(可以在日志中查找数据对应的键值对),我们可以通过 event 变量来获取body的值,event就是一个请求头字典,代码如下:

# -*- coding: utf8 -*-
import json
def main_handler(event, context):
    print("Received event: " + json.dumps(event, indent = 2)) 
    print("===============================")
    print("Received context: " + str(context))

    # 拿到本地python传来的参数,并装换为字典格式
    json_params = json.loads(event.get("body"))
    
    print("--------------------------")
    print(json_params)

  如果我们本地传来的json字符串为:

{"user_name": "admin", "password": "123456"}

  则 json_params 变量就是以 {"user_name": "admin", "password": "123456"} 为值的字典变量,我们就可以很方便的获取到里面的值了。

2.2 封装json数据返回给本地程序

  按照我给我格式进行封装,直接retuen回去即可,代码如下:

# -*- coding: utf8 -*-
import json
def main_handler(event, context):
    # 封装为特定的数据给腾讯的统一出口
    ret = {
        "isBase64Encoded": False,
        "statusCode": 200,
        "headers": {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"},
        "body": json.dumps({"user_name": "admin", "password": "123456"})
        }

    return ret

  这样,就可以返回json数据给本地程序了。

2.3 完整代码

# -*- coding: utf8 -*-
import json
def main_handler(event, context):
    print("Received event: " + json.dumps(event, indent = 2)) 
    print("===============================")
    print("Received context: " + str(context))

    # 拿到qt传来的参数
    json_params = json.loads(event.get("body"))
    print("--------------------------")
    print(json_params)

    # 获取用户名和密码
    user_name = json_params.get("user_name")
    print("用户名为:", user_name)
    password = json_params.get("password")
    print("密码为:", password)

    # 模拟查询数据库
    if user_name == "admin" and password == "123456":
        login_ret = {"errno": 0, "errmsg": "登录成功"}
    else:
        login_ret = {"errno": 1001, "errmsg": "登录失败!您输入的用户名密码为%s:%s 正确的用户名密码为:admin:123456" %
        (user_name, password)}

    
    # 封装为特定的数据给腾讯的统一出口
    ret = {
        "isBase64Encoded": False,
        "statusCode": 200,
        "headers": {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"},
        "body": json.dumps(login_ret)
        }

    return ret

三、本地程序调用云函数

  先安装 requests 模块:

pip install requests -i https://pypi.douban.com/simple

  使用 post 请求调用云函数,代码如下:

r = requests.post(url='https://service-q82pfbii-1318381894.gz.apigw.tencentcs.com/release/qt_login', json={"user_name": "admin", "password": "123456"})

ret = r.json() # 获取返回的json数据 ({"errno": 0, "errmsg": "登录成功"})

  获得返回的数据之后就可以继续执行下面的逻辑了,对你有帮助的话,希望您能一键三连!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AMD Software Adrenalin Edition 23.5.1驱动发布,快速获取驱动

AMD新驱动赶在五月天发布!AMD Software Adrenalin Edition 23.5.1驱动 ,为部分游戏带来支持,以及为重要的软件带来修复。驱动人生带大家一览AMD WHQL 23.5.1驱动的优化内容。 游戏方面,AMD WHQL 23.5.1主要为游戏《指环王&#x…

详解MVCC相关知识点

前言:学习前,先叙述mysql相关基础知识,一步步了解mysql底层机制。 1.Mysql的隔离级别: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable ,这…

23种设计模式之观察者模式(Observer Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的观察者模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

计算机视觉与OpenCV算法学习内容总结,太详细了!

计算机视觉是一项基于数字图像和视频处理的前沿技术,在人工智能领域中得到了广泛应用。而OpenCV(开源计算机视觉库)是一款以C语言为主的跨平台计算机视觉库,被广泛认可为业界最优秀的计算机视觉库之一。 相比于传统的图像处理技术…

【selenium自动化测试入门】 python unittest单元测试框架

unittest又名PyUnit, Python单元测试框架(The Python unit testing framework),简称为PyUnit。自从 Python 2.1 版本后,PyUnit成为 Python标准库的一部分。 为什么需要使用unittest单元测试框架? 当我们写…

老油条感叹:现在00后真的太卷了....

最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金九银十的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的软件测试技术栈,非常珍…

预训练模型 ---- BERT架构

目录 什么是BERT BERT的架构 BERT的预训练任务 小节总结 BERT的特点 BERT和GPT的区别 笔记参考:【2023最新!4个小时带你重新认识【BERTtransformer】,详解self-attention,翻遍全网找不到比它更详细的了!&#xf…

工作记录:在线 word - 列表

需求&#xff1a;上传 word 文档&#xff0c;在页面的富文本编辑器中展示、编辑后&#xff0c;再导出成 word 格式。 我负责开发列表功能 为什么不用 ul 一开始想用<ul> <li> 去实现列表&#xff0c;但随即发现一些问题&#xff1a; 问题一&#xff1a;word 中的…

知乎+chatgpt炸了!撸点小钱~

大家好&#xff0c;我是五竹。 之前分享了一下&#xff0c;朋友圈的好友如何复制我的玩法利用chatgpt赚点小钱的实战&#xff1a;TMD&#xff0c;被人偷窥了一个月&#xff01; 紧接着我自己最近也在知乎小赚了一笔&#xff01;我以为在知乎上那篇文章的热点就消退了&#xff0…

字节25K就面试这些?简直惊呆我了...

互联网行业竞争是一年比一年严峻&#xff0c;作为软件测试工程师的我们唯有不停的学习&#xff0c;不断提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里&#xff0c;字节跳动&#xff0c;腾讯&#xff0c;美团&#xff09; 话不…

获取安卓签名文件的MD5值与SHA1码

目录 前言 一、用命令行的方式仅能获取SH1、SHA256 ​编辑 二、用gradle的方式可以获取MD5值 1.打开Android Studio&#xff0c;点击右边的Gradle 2.点击大象&#xff0c;输入查询签名信息的命令 总结 前言 公司App项目要备案&#xff0c;要搜集MD5值与SHA1码&#xff0…

Software List

Ubuntu22 Goldendict Ubuntu安装划词翻译软件Goldendict 单词翻译 句子翻译_ubuntu划词翻译_Bourne_Boom的博客-CSDN博客有道词典长期未更新&#xff0c;由于某些模块不支持的问题已经无法在Ubuntu18.04中使用了。现在介绍另一款强大的翻译软件——Goldendict。1.安装&#…

Android Qcom Display学习(十四)

该系列文章总目录链接与各部分简介&#xff1a; Android Qcom Display学习(零) 本章主要就是学习一下开机logo和开机动画是怎么加载&#xff0c;客制化修改的。 Bootlogo QcomChargerApp.c QcomChargerApp_MonitorChargingQcomChargerAppDisplay_DispBattSymbol(DispImageTy…

SARscape连接图编辑(ConnectGraph)

SARscape连接图编辑ConnectGraph 0 连接图是什么1 什么时候需要编辑连接图2 连接图编辑步骤 0 连接图是什么 连接图ConnectGraph就是差分干涉数据对的关系图。 在SARscape中进行干涉叠加Interferometric Stacking处理&#xff0c;常见的包括PS和SBAS。 首先就要根据数据的空间…

美团小组长薪资被应届生员工倒挂7K,不把老员工当人?

一位美团的小管理爆出&#xff0c;无意中看到了整个部门薪资&#xff0c;本以为自己算比较高的&#xff0c;但看完之后整个人都傻眼了。小组长的职位月薪28K&#xff0c;而手下组员却是35K&#xff0c;当天晚上抽了一包烟也没想明白是为什么。 楼主表示&#xff0c;自己是美团的…

git提交分支

1. git提交分支相关 在本地新建分支&#xff0c;保证和远程分支一样 git checkout -b 分支名如果分支已存在&#xff0c;只需要切换的话 git checkout 分支名提交前先把代码拉下来更新一下&#xff0c;确保不会覆盖别人的代码 git pull origin 远程分支(如果有)解决冲突 g…

低代码平台名声臭,用起来却真香——90%重复工作给你完成喽

一、前言 开发过程中&#xff0c;只是觉得前端后端合起来&#xff0c;有很多冗余信息&#xff0c;被代码一遍遍重复表达&#xff0c;是一件很枯燥、无聊的事情。 这些枯燥的重复工作&#xff0c;完全可以由机器来做&#xff0c;以便解放出我们的时间&#xff0c;来做更有价值的…

智慧班牌源码源,SaaS云平台端、智慧校园管理平台端、家长/教师微信移动端、智慧班牌学生端

智慧电子班牌系统包括&#xff1a;SaaS云平台端、智慧校园管理平台端、家长/教师微信移动端、智慧班牌学生端四大软件平台。 文末获取联系&#xff01; 技术架构&#xff1a; 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端小程序使用小程序原生语言开发 4、电子班…

xlsx是什么格式

xlsx是什么格式? xlsx是Excel文档的扩展名&#xff0c;其基于Office Open XML标准的压缩文件格式&#xff0c;取代了其以前专有的默认文件格式&#xff0c;在传统的文件名扩展名后面添加了字母x&#xff0c;即.xlsx取代.xls。 xlsx文件是什么格式? xlsx是Excel表格的文件格…

【Linux】-- 基础IO和动静态库

一、系统文件IO 1.文件与读写字符串 对于C文件接口&#xff0c;假如想向特定文件写入字符串&#xff1a; cFile.c #include<stdio.h>int main() {FILE * fp fopen("./log.txt","w");if(NULL fp){perror("fopen error");return 1;}int co…