二:前端发送POST请求,后端获取数据

接着一:可以通过端口访问公网IP之后
二需要实现:点击飞书多维表格中的按钮,向服务器发送HTTP请求,并执行脚本程序

向服务器发送HTTP请求:

发送请求需要明确一下几个点

  1. 请求方法:
    由于是向服务器端发送值,因此选择的是POST请求
  2. 请求的URL:
    请求的url就是http://公网IP:port/doc
    a. http不可以写成https,否则会报首次握手失败
  3. 查询参数:
    查询参数通常是在URL末尾以?开头的,多个参数使用&连接
    http://公网IP:port/doc?name=liming&age=30
  4. 请求头:
    一般用于描述请求的格式,认证信息和缓存控制等
    比如Authorization,Content-Type等
    在终端,-H “Content-Type: application/json”
    -H “Authorization: Bearer my_token” 形式存在
  5. 请求体:
    客户端发送给服务器的数据部分,通常用于提交表单,发送JSON数据,上传文件等
    请求头中包含请求体的格式比如application/JSON,text/plain,multipart/form-data,application/X-www-form-urlencoded等
    在这里插入图片描述

后端如何get上述请求中传输的变量

HTTP以不同形式传入的参数使用的get方法也是不一样
使用Flask处理HTTP请求

  1. 获取查询参数request.args.get(‘[变量名]’)
    get到的参数均是以字符串的形式存在
from flask import Flask, request
app = Flask(__name__)@app.route('/doc', methods=['POST'])
def api():# 获取查询参数name = request.args.get('name')  # 通过 request.args 获取 URL 查询参数age = request.args.get('age')# 获取 POST 请求的 JSON 数据json_data = request.json  # request.get_json() 也可以return {"query_params": {"name": name, "age": age}, "body": json_data}if __name__ == '__main__':app.run(debug=True)

使用windows中的终端尝试是否能够访问端口并打印出内容,如果少了一个参数可能会导致服务器返回500 Internal Server Error错误

curl -X POST "http://[公网IP]:[端口号]/doc?name=liming&age=30
  1. 获取请求头 request.headers.get()
user_agent = request.headers.get('User-Agent')
auth_token = request.headers.get('Authorization')
  1. 获取请求体
    总结
request.json         # 解析 JSON 数据
request.form        # 解析表单数据(x-www-form-urlencoded)
request.files       # 解析文件(multipart/form-data)
request.data        # 读取原始请求体

a. Json请求体 request.json
在终端以
-d '{“name”: “Alice”, “age”: 25}'的形式存在

data = request.json #这一句即可获取请求体

b. 表单发送请求体 request.form.get()
-d “username=alice&password=123456”

username = request.form.get("username")password = request.form.get("password")

c.文件上传请求体
-F “file=@image.jpg”

file = request.files['file']  # 获取上传的文件file.save(f"./uploads/{file.filename}")

客户端向服务器发送HTTP请求

第一种方式:requests请求,适合API请求
  1. 发送请求
import requestsurl = "http://example.com/api"
headers = {"Content-Type": "application/json"}
data = {"key": "value"}response = requests.request("POST", url, headers=headers, json=data)
print(response.json())  # 解析 JSON 响应

这种返回的是response.Response对象
可以通过方法返回想要得到的内容

response.status_code # 例如 200(成功)、400(请求错误)、500(服务器错误)
response.headers #服务器返回的HTTP的头部信息
response.text #以字符串的形式获取相应内容
response.content  #以字节流的形式获取相应内容

如果返回的是JSON数据

data = response.json()  # 解析 JSON 数据
data = response.json().get('data')  # 从json中提取data字段的值,不会报错

.json()用于解析服务器返回的json数据,转化为python字段
.get(‘data’)从解析后的JSON字段中获取data字段的值

第二种方式http.client适用于底层的HTTP处理
import http.client
import jsonconn = http.client.HTTPSConnection("example.com")  # 需要指定域名
headers = {"Content-Type": "application/json"}
payload = json.dumps({"key": "value"})  # 需要手动转换为 JSON 字符串conn.request("POST", "/api", payload, headers)
res = conn.getresponse()
data = res.read().decode("utf-8")  # 需要手动解码print(data)  # 这里是字符串,需要再用 json.loads(data) 解析

区别:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内外网文件传输 安全、可控、便捷的跨网数据传输方案

一、背景与痛点 在内外网隔离的企业网络环境中,员工与外部协作伙伴(如钉钉用户)的文件传输面临以下挑战: 安全性风险:内外网直连可能导致病毒传播、数据泄露。 操作繁琐:传统方式需频繁切换网络环境&…

elasticsearch在windows上的配置

写在最前面: 上资源 第一步 解压: 第二步 配置两个环境变量 第三步 如果是其他资源需要将标蓝的文件中的内容加一句 xpack.security.enabled: false 不同版本的yaml文件可能配置不同,末尾加这个 xpack.security.enabled: true打开bin目…

OpenCV二值化处理

1.1. 为什么需要二值化操作 二值化操作将灰度图像转换为黑白图像,即将图像中的像素值分为两类:前景(通常为白色,值为 255)和背景(通常为黑色,值为 0)。二值化的主要目的是简化图像&…

[Android]浏览器下载的apk文件无法识别无法安装问题

在Android电话机上,用浏览器下载apk进行版本更新,出现下载文件没被识别为apk,导致无法安装问题。 原来的下载链接: https://mojsetup.obs.cn-southwest-2.myhuaweicloud.com/callphone-release-1.0.4.apk 修改后的下载链接&…

如何使用SSH连接设备?很简单!

前言 小白发现最近写的文章都与SSH息息相关,于是就有了这一篇文章,免得在后续的文章又不断重复如何SSH连接设备。 有需要的小伙伴自然就会看到这里,也不会影响到其他小伙伴的阅读体验。 至于文章里的广告嘛……就当是小伙伴们给小白的一点…

【自学嵌入式(9)ESP8266网络服务器的使用】

ESP8266网络服务器的使用 ESP8266WiFi 库① WiFiClass② WiFiClient③ WiFiServer④ WiFiUDP ESP8266WiFiMulti 库① WiFiMulti ESP8266WebServer 库① P8266WebServer 网络服务器实例在浏览器中控制ESP8266指示灯将开发板引脚状态显示在网页中 在之前的文章中,曾经…

pytorch3d安装记录

官方安装教程: https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md 通过pip 或conda 可以很容易安装上预编译好的包, 安装过程不会报错, 但是使用的时候就会报各种错误 ,原因是预编译好的包跟自己的环境不一定…

【CVPR2024-工业异常检测】PromptAD:与只有正常样本的少样本异常检测的学习提示

代码链接 摘要 摘要写作总结: 1.提出 两个关键点 (视觉语言模型【模型】 少量工业异常检测【方向】) 2.想要解决的问题 3.针对上述问题,本文提出了一种什么【方法】的什么【应用方面】方法【模型名】 4.具体讲方法的步骤 5.实验…

【PostgreSQL】如何通过调整PostgreSQL配置参数提高数据库性能

如何通过调整PostgreSQL配置参数提高数据库性能 1. 数据库初始性能2. 内存相关参数3. WAL(Write-Ahead Logging)相关参数4. 并行查询相关参数5. 连接相关参数6. 根据情况调整 1. 数据库初始性能 使用pgbench在更新PostgreSQL数据库配置前先测试下数据库…

AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践

前言 自2022年末ChatGPT的问世,大语言模型(LLM)技术引发全球关注。在大模型技术落地的最佳实践中,智能体(Agent)架构显现出巨大潜力,成为业界的普遍共识,各大公司也纷纷启动Agent技…

从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革

前几天偶然发现了一个超棒的人工智能学习网站,内容通俗易懂,讲解风趣幽默,简直让人欲罢不能。忍不住分享给大家,点击这里立刻跳转,开启你的AI学习之旅吧! 前言 – 人工智能教程https://www.captainbed.cn/l…

ChātGPT赋能的“SolidWorks工具箱”:重塑3D设计效率新标杆

ChātGPT精心打造的“SolidWorks工具箱”正逐步成为3D设计领域中的一颗璀璨新星,其集高效、便捷与创新于一身,为用户带来了前所未有的设计体验。以下是对这一革命性工具箱的深度剖析与美化呈现: 一、核心功能:重塑设计流程&#x…

php处理图片出现内存溢出(Allowed memory size of 134217728 bytes exhausted)

错误: 最近做图片上传功能时发现上传某些图片时报内存溢出错误。如下所示: {"code": 0,"msg": "Allowed memory size of 134217728 bytes exhausted (tried to allocate 24576 bytes)","data": {"code&q…

Spring——SpringSecurity开发经验实战

摘要 本文介绍了一个简单的 Spring Security 实战示例,涵盖基本的身份验证和授权流程。首先介绍了 Spring Security 是一个强大的安全框架,用于在 Spring 应用中实现身份验证、授权以及保护应用免受常见安全攻击。接着详细阐述了项目结构、添加 Spring …

Innovus中快速获取timing path逻辑深度的golden脚本

在实际项目中我们经常会遇到一条timing path级数特别多,可能是一两页都翻不完。此时,我们大都需要手工去数这条path上到底有哪些是设计本身的逻辑,哪些是PR工具插入的buffer和inverter。 数字IC后端手把手培训教程 | Clock Gating相关clock …

【Qt】桌面应用开发 ------ 绘图事件和绘图设备 文件操作

文章目录 9、绘图事件和绘图设备9.1 QPainter9.2 手动触发绘图事件9.3 绘图设备9.3.1 QPixmap9.3.2 QImage9.3.3 QImage与QPixmap的区别9.3.4 QPicture 10、文件操作10.1 文件读写10.2 二进制文件读写10.3 文本文件读写10.4 综合案例 9、绘图事件和绘图设备 什么时候画&#x…

数据结构绪论

一-数据结构的基本概念 1-数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 2-数据元素 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。…

kafka基本知识

什么是 Kafka? Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的一部分。Kafka 主要用于构建实时数据管道和流处理应用程序。它能够高效地处理大量的数据流,广泛应用于日志收集、数…

DeepSeek R1本地+私有云版医疗AI部署开发成功案例技术剖析

1. 引言 1.1 研究背景与意义 随着科技的飞速发展,人工智能(AI)在医疗领域的应用正逐渐成为推动医疗行业变革的重要力量。近年来,医疗 AI 取得了显著的进展,从疾病诊断、药物研发到医疗管理等各个环节,AI 技术都展现出了巨大的潜力。它能够处理和分析海量的医疗数据,为…

网络安全-openssl工具

OpenSSl是一个开源项目,包括密码库和SSL/TLS工具集。它已是在安全领域的事实标准,并且拥有比较长的历史,现在几乎所有的服务器软件和很多客户端都在使用openssl,其中基于命令行的工具是进行加密、证书管理以及测试最常用到的软件。…