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

这篇具有很好参考价值的文章主要介绍了Python调用腾讯云函数传递json数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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

一、开通腾讯云函数功能

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

2、在搜索框输入云函数,进入云函数控制台,如图:
Python调用腾讯云函数传递json数据

3、点击 函数服务 ,点击新建,进入新建云函数页面,如图:
Python调用腾讯云函数传递json数据

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

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

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

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

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

9、勾选同意、点击完成,云函数创建完成,如图:
Python调用腾讯云函数传递json数据

10、双击进入函数配置页面,点击触发器,我们要添加一个触发器,否则无法通过url来调用云函数,,点击创建触发器,如图:
Python调用腾讯云函数传递json数据

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

等待十几秒,触发器创建完成,如图:
Python调用腾讯云函数传递json数据

最下面的访问路径就是我们调用云函数的url链接,直接拿到浏览器中进行访问,会显示访问错误,如图:
Python调用腾讯云函数传递json数据

  因为我们设置的是传递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": "登录成功"})

  获得返回的数据之后就可以继续执行下面的逻辑了,对你有帮助的话,希望您能一键三连!!!文章来源地址https://www.toymoban.com/news/detail-459377.html

到了这里,关于Python调用腾讯云函数传递json数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • json数据、日期数据的参数传递及响应

    首先在maven中添加json坐标 1.1 postman如何发送json数据 1.2 发送json数据,控制器如何接收 在springMVC配置文件中开启@EnableWebMvc才可以将json数据转换成各种对象数据,作用就是根据传参类型匹配对应的类型转换器 @RequestParam与@RequestBody注解之间的区别 2.1 日期类型参数如何指定格式

    2024年02月11日
    浏览(52)
  • 【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK

    Python是一种 流行 的高级编程语言,具有易于学习和使用的特性,被广泛应用于各种领域。 简单易学 :Python的语法清晰简洁,易于理解和学习。与其他编程语言相比,Python的语法设计非常直观,使得编程新手也能快速上手。 强大的标准库和丰富的第三方库 :Python拥有一个庞

    2024年02月04日
    浏览(145)
  • Java&Vue 借助json传递数据

    2024年04月26日
    浏览(33)
  • Python | 爬虫的request.post如何传递json参数

    例如: 这里通过json参数传递了一个字典类型的data数据,在请求头中设置Content-Type为application/json。requests会自动将json参数转化为合法的JSON格式,并且将其作为请求体提交给服务器。注意,这里的json参数是requests库中的内置参数之一,表示将请求体数据序列化为JSON格式。 在服

    2024年02月11日
    浏览(37)
  • 前端传递JSON数组数据到后端(解析方法)

            在前端和后端之间 传递数组 时,由于HTTP协议的限制,无法直接传递数组类型的参数。 请求参数需要被转换为字符串格式传递给后端,所以需要通过 JSON.stringify() 方法将 gradeIdArray 数组转换为一个 JSON 字符串,并将其作为参数传递给后端。         在后端的控

    2024年02月16日
    浏览(52)
  • @RequestBody接收不到前端传递过来的json数据

    我刚开始只是写@RequestBody ParkingRecord parkingRecord 一直获取的都是null, 直到用了Map标签才终于获取到参数了 获取到map的key,就可以获取值了 有人说是前后端参数名称不一致:在实体类的属性上加一个注解 然而这个没有解决我的问题 也有人说是因为lombok的问题,自己用idea的快捷

    2024年02月12日
    浏览(50)
  • Spring MVC 参数传递和JSON数据处理

    编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据: @RequestBody:作用是接收前端aja

    2024年01月24日
    浏览(50)
  • python:使用RESTful API(flask)调用python程序传递参数,实现Web端调用python程序

    现有一个用python写的程序(或者是一个或几个的函数接口),需要在Web前端调用python写的函数。如果直接用前端java来调用会很不方便,而且会出现各种麻烦的问题,下面给出如何在web前端调用python的接口。 使用python的RESTful API库将python写的函数封装为Web端可调用的接口,在

    2024年01月20日
    浏览(40)
  • 从前端到后端:如何在 URL 参数中传递 JSON 数据

    在 Web 开发中,我们经常需要将数据作为 URL 参数进行传递。当我们需要传递复杂的数据结构时,如何在前端将其转换为字符串,并在后端正确地解析它呢?本文将介绍如何在前端将 JSON 数据进行 URL 编码,并在后端将其解析为相应的数据类型,同时提供 Java 语言的示例代码。

    2024年02月07日
    浏览(50)
  • QT调用python传递图像和二维数组,并接受python返回值(图像)

    用QT调用python代码,将QT读取的图像(Mat矩阵)作为参数传入python中,将QT的二维数组作为参数传递给python,python接收QT传入的图像进行计算,将结果返回给QT。 1.新建QT项目 说明:QT的编译环境我使用的MinGW 64,编译的release包 (1)按照下图依次选择Application,Qt Widgets Application, 然

    2024年02月09日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包