当前位置: 首页 > news >正文

【pytho】request五种种请求处理为空和非空处理以及上传excel,上传图片处理

一、python中请求处理

request.args获取的是个字典,所以可以通过get方式获取请求参数和值

request.form获取的也是个字典,所以也可以通过get方式获取请求的form参数和值

request.data,使用过JavaScript,api调用方式进行掺入json字符串,由于传入的是字符串,所有需要通过json.loads(request.data)进行加载成字典

request.json,获取的是个字典,所以特可以通过get方式获取

request.headers也是字典

request.cookies也是字典

from flask import Flask, request, Response
from werkzeug.utils import secure_filename
import os
import json
import xlrdapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World!'@app.route('/test_1.0', methods=['GET'])
def check():# 默认返回内容return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}# 判断入参为空# if len(request.args) == 0:if not len(request.args):return_dict['return_code'] = '5004'return_dict['return_info'] = '请求参数为空'return json.dumps(return_dict, ensure_ascii=False)# 获取传入的params参数get_data = request.args.to_dict()name = get_data.get('name')age = get_data.get('age')return_dict['result'] = tt(name, age)return json.dumps(return_dict, ensure_ascii=False)@app.route('/test_1.1', methods=['POST'])
def check1():# 默认返回内容return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}# 判断入参为空if not request.get_data():return_dict['return_code'] = '5004'return_dict['return_info'] = '请求参数为空'return json.dumps(return_dict, ensure_ascii=False)# 获取传入的参数get_data = request.get_data()get_data = json.loads(get_data)name = get_data.get('name')age = get_data.get('age')return_dict['result'] = tt(name, age)return json.dumps(return_dict, ensure_ascii=False)@app.route('/test_1.2', methods=['POST'])
def check2():# 默认返回内容return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}# 判断入参为空if not request.form:return_dict['return_code'] = '5004'return_dict['return_info'] = '请求参数为空'return json.dumps(return_dict, ensure_ascii=False)# 获取传入的参数get_data = request.formname = get_data.get('name')age = get_data.get('age')return_dict['result'] = tt(name, age)return json.dumps(return_dict, ensure_ascii=False)@app.route('/test_1.3', methods=['POST'])
def check3():# 默认返回内容return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}# 判断入参为空if not request.get_json():return_dict['return_code'] = '5004'return_dict['return_info'] = '请求参数为空'return json.dumps(return_dict, ensure_ascii=False)# 获取传入的参数get_data = request.jsonname = get_data.get('name')age = get_data.get('age')return_dict['result'] = tt(name, age)return json.dumps(return_dict, ensure_ascii=False)def tt(name, age):result_str = "%s今年%s岁" % (name, age)return result_str# 上传表格
@app.route("/excel_info", methods=["GET", "POST"])
def excel_info():if request.method == "POST":# 获取参数用request.form, 获取文件用request.filesfile = request.files.get('file')if not file:return {"code": '401', "message": "缺少参数"}# 读取表格内容workbook = xlrd.open_workbook(file_contents=file.read())# 获取第一个sheetsheet = workbook.sheet_by_index(0)# 获取总行数row = sheet.nrows# 从表格中选取字段titles = ['name', 'age', 'address']json_list = []# 遍历每一行内容for i in range(row):if i == 0:continuerow_value = sheet.row_values(i)# 构造字典obj = dict()json_list.append(obj)for title, col_val in zip(titles, row_value):obj.setdefault(title, col_val)return {"code": '200', "message": json_list}else:return {"code": '403', "message": "仅支持post方法"}# 设置图片保存文件夹
app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(__file__), 'static', 'images')# app.config['UPLOAD_FOLDER'] = './static/images'# 设置允许上传的文件格式
ALLOW_EXTENSIONS = ['png', 'jpg', 'jpeg']# 判断文件的后缀是否在列表中
def allow_file(filename):return '.' in filename and filename.rsplit('.', 1)[-1] in ALLOW_EXTENSIONS# 上传图片
@app.route("/upload_image", methods=['GET', 'POST'])
def uploads():if request.method == 'POST':# 获取post过来的文件名称,从name=file参数中获取file = request.files.get('file')# 检查文件格式if file and allow_file(file.filename):# secure_filename方法会去掉中文名中的中文file_name = secure_filename(file.filename)# 保存图片file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name))return {"code": "200", "data": "", "message": "上传成功"}else:return "格式错误,仅支持jpg,png,jpeg格式文件"return {"code": '503', "data": "", "message": "仅支持post方法"}# 查看图片
@app.route('/images/<imageId>')
def get_frame(imageId):with open(r'./static/images/{}'.format(imageId), 'rb') as f:image = f.read()result = Response(image, mimetype="image/jpg")return resultif __name__ == '__main__':app.run()

请求示意图:

三,参考:

(33条消息) python——flask常见接口开发(简单案例)_flask接口开发例子_大蛇王的博客-CSDN博客

相关文章:

【pytho】request五种种请求处理为空和非空处理以及上传excel,上传图片处理

一、python中请求处理 request.args获取的是个字典&#xff0c;所以可以通过get方式获取请求参数和值 request.form获取的也是个字典&#xff0c;所以也可以通过get方式获取请求的form参数和值 request.data&#xff0c;使用过JavaScript&#xff0c;api调用方式进行掺入jso…...

【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen&#xff0c;之后一直按Enter即可&#xff0c;这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意&#xff1a;也可以在 windows 端生成密钥&#xff0c;只需要保证公钥在服务器端&#xff0c;私钥…...

解锁新技能《基于logback的纯java版本SDK实现》

开源SDK&#xff1a; <!--Java通用日志组件SDK--> <dependency><groupId>io.github.mingyang66</groupId><artifactId>oceansky-logger</artifactId><version>4.3.6</version> </dependency> <!-- Java基于logback的…...

你需要知道的云原生架构体系内容

云原生&#xff08;Cloud-Native&#xff09;的概念在国内提及的越来越多&#xff0c;但大部分人对云原生的认识仅限于容器、微服务、DevOps等内容&#xff0c;把容器、微服务、 DevOps就等同于云原生&#xff0c;这显然是不对的。CNCF从其自身的角度定义了云原生技术&#xff…...

安全渗透--正则表达式

什么是正则表达式&#xff1f; 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。 “Regular expression”这个词比较拗口&#xff0c;我们常使用缩写的术语“regex…...

git如何撤销commit(未push)

文章目录 前言undo commitreset current branch to here Undo Commit&#xff0c;Revert Commit&#xff0c;Drop Commit的区别 是否删除对代码的修改是否删除Commit记录是否会新增Commit记录Undo Commit不会未Push会&#xff0c;已Push不会不会Revert Commit会不会会Drop Com…...

Vue数组与字符串互转

一、数组转换成字符串的方法 join() var arr [A, B, C]; var str arr.join(、); console.log(str); // 输出 A、B、C toString() var arr [A, B, C]; var str arr.toString(); console.log(str); // 输出 A, B, C JSON.stringify() var arr [A, B, C]; var str JSO…...

Java编程实现遍历两个MAC地址之间所有MAC的方法

Java编程实现遍历两个MAC地址之间所有MAC的方法 本文实例讲述了java编程实现遍历两个MAC地址之间所有MAC的方法。分享给大家供大http://家参考&#xff0c;具体如下&#xff1a; 在对发放的设备进行后台管理时,很多时候会用到设备MAC这个字段,它可以标识唯一一个设备。然而在数…...

用AXIS2发布WebService的方法

Axis2+tomcat6.0 实现webService 服务端发布与客户端的调用。 Aixs2开发webService的方法有很多,在此只介绍一种比较简单的实现方法。 第一步:首先要下载开发所需要的jar包 下载:axis2-1.6.1-war.zip http://www.apache.org/dist//axis/axis2/java/core/1.6.1/ 下载…...

嵌入式学习_Day 003

程序功能介绍 c #include <stdio.h> int main() {char c,ll;printf("please enter a capital letter:");cgetchar();getchar();if (c>A&& c<Z) {llc32;printf("Lowercase letter output:%c\n",ll);printf("ASCII value:%d\n"…...

常用的数据结构 JAVA

目录 1、线性表2、栈&#xff1a;3、队列&#xff1a; 1、线性表 List<Object> narnat new ArrayList<>();ArrayList&#xff1a;动态数组 1、可以嵌套使用 2、add(x)添加元素x&#xff0c;remove(index)删除某个位置的元素 3、注意list是指向性的&#xff0c…...

基于机器视觉工具箱和形态学处理的视频中目标形状检测算法matlab仿真

目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程 1.算法理论概述 目标形状检测是计算机视觉领域的重要任务之一&#xff0c;旨在从视频序列中自动检测和识别特定目标的形状。本文介绍一种基于机器视觉工具箱和形态学处理…...

小白入门:sentence-transformer 提取embedding模型转onnx

文章目录 序言原理讲解哪些部分可转onnx 代码区0. 安装依赖1. 路径配置2. 测试数据3. 准备工作3.1迁移保存目标文件 4. model转onnx-gpu5. 测试一下是否出错以及速度5.1 测试速度是否OK5.2测试结果是否OK 6. tar 这些文件 序言 本文适合小白入门&#xff0c;以自己训练的句子e…...

数据库应用:Redis持久化

目录 一、理论 1.Redis 高可用 2.Redis持久化 3.RDB持久化 4.AOF持久化&#xff08;支持秒级写入&#xff09; 5.RDB和AOF的优缺点 6.RDB和AOF对比 7.Redis性能管理 8.Redis的优化 二、实验 1.RDB持久化 2.AOF持久化 3.Redis性能管理 4.Redis的优化 三、总结 一、…...

js版计算比亚迪行驶里程连续12个月计算不超3万公里改进版带echar

<!DOCTYPE html> <html lang"zh-CN" style"height: 100%"> <head> <meta charset"utf-8" /> <title>连续12个月不超3万公里计算LIGUANGHUA</title> <style> .clocks { …...

一文详解Spring Bean循环依赖

一、背景 有好几次线上发布老应用时&#xff0c;遭遇代码启动报错&#xff0c;具体错误如下&#xff1a; Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name xxxManageFacadeImpl: Bean with name xxxManageFa…...

基于PHP+ vue2 + element +mysql自主研发的医院不良事件上报系统

医院不良事件上报管理系统源码 不良事件上报是为了响应卫生部下发的等级医院评审细则中第三章第9条规定&#xff1a;医院要有主动报告医疗安全&#xff08;不良&#xff09;事件的制度与工作流程。由医疗机构医院或医疗机构报告医疗安全不良事件信息&#xff0c;利用报告进行研…...

微服务远程调用openFeign简单回顾(内附源码示例)

目录 一. OpenFeign简介 二. OpenFeign原理 演示使用 provider模块 消费者模块 配置全局feign日志 示例源代码: 一. OpenFeign简介 OpenFeign是SpringCloud服务调用中间件&#xff0c;可以帮助代理服务API接口。并且可以解析SpringMVC的RequestMapping注解下的接口&#x…...

【云计算小知识】云环境是什么意思?有什么优点?

随着云计算的快速发展&#xff0c;了解云计算相关知识也是运维人员必备的。那你知道云环境是什么意思&#xff1f;有什么优点&#xff1f;云环境安全威胁有哪些&#xff1f;如何保证云环境的运维安全&#xff1f;这里我们就来简单聊聊。 云环境是什么意思&#xff1f; 云环境是…...

【搜索引擎Solr】Apache Solr 神经搜索

Sease[1] 与 Alessandro Benedetti&#xff08;Apache Lucene/Solr PMC 成员和提交者&#xff09;和 Elia Porciani&#xff08;Sease 研发软件工程师&#xff09;共同为开源社区贡献了 Apache Solr 中神经搜索的第一个里程碑。 它依赖于 Apache Lucene 实现 [2] 进行 K-最近邻…...

PostgreSQL 设置时区,时间/日期函数汇总

文章目录 前言查看时区修改时区时间/日期操作符和函数时间/日期操作符日期/时间函数&#xff1a;extract&#xff0c;date_part函数支持的field 数据类型格式化函数用于日期/时间格式化的模式&#xff1a; 扩展 前言 本文基于 PostgreSQL 12.6 版本&#xff0c;不同版本的函数…...

性能测试Ⅱ(压力测试与负载测试详解)

协议 性能理论&#xff1a;并发编程 &#xff0c;系统调度&#xff0c;调度算法 监控 压力测试与负载测试的区别是什么&#xff1f; 负载测试 在被测系统上持续不断的增加压力&#xff0c;直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状…...

【Python入门系列】第十八篇:Python自然语言处理和文本挖掘

文章目录 前言一、Python常用的NLP和文本挖掘库二、Python自然语言处理和文本挖掘1、文本预处理和词频统计2、文本分类3、命名实体识别4、情感分析5、词性标注6、文本相似度计算 总结 前言 Python自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&…...

【GD32F103】自定义程序库08-DMA+ADC

DMA 自定义函数库说明: 将DMA先关的变量方式在一个机构体中封装起来,主要参数有 dma外设,时钟,通道,外设寄存器地址,数据传输宽度,数据方向,外设是能dma传输使能回调函数,扫描模式中断编号dma中断使能传输完成标志数据存储空间使用一个枚举类型指明每个DMA绑定到那个…...

集成了Eureka的应用启动失败,端口号变为8080

问题 报错&#xff1a;集成了Eureka的应用启动失败&#xff0c;端口号变为8080。 原来运行的项目&#xff0c;突然报错&#xff0c;端口号变为8080&#xff1a; Tomcat initialized with port(s): 8080 (http)并且&#xff0c;还有如下的错误提示&#xff1a; RedirectingE…...

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15 引言Basic T/OBasic T/O ReadsBasic T/O WritesBasic T/O - Example #1Basic T/O - Example #2 Basic T/O SummaryRecoverable Schedules Optimistic Concurrency Control (OCC)OCC - ExampleSERIAL VALIDATIONOCC …...

MURF2080CT/MURF2080CTR-ASEMI快恢复对管

编辑&#xff1a;ll MURF2080CT/MURF2080CTR-ASEMI快恢复对管 型号&#xff1a;MURF2080CT/MURF2080CTR 品牌&#xff1a;ASEMI 芯片个数&#xff1a;2 芯片尺寸&#xff1a;102MIL*2 封装&#xff1a;TO-220F 恢复时间&#xff1a;50ns 工作温度&#xff1a;-50C~150C…...

去除 idea warn Raw use of parameterized class ‘Map‘

去除 idea warn Raw use of parameterized class ‘Map’ 文档&#xff1a;Raw use of parameterized class ‘Map’… 链接&#xff1a;http://note.youdao.com/noteshare?id99bf4003db8cc5ae9813ee11e58c4d13&sub5856371AEFA740AF8FA4D8935B4F6912 添加链接描述 public…...

使用BERT分类的可解释性探索

最近尝试了使用BERT将告警信息当成一个文本去做分类&#xff0c;从分类的准召率上来看&#xff0c;还是取得了不错的效果&#xff08;非结构化数据强标签训练&#xff0c;BERT确实是一把大杀器&#xff09;。但准召率并不是唯一追求的目标&#xff0c;在安全场景下&#xff0c;…...

web APIs-练习二

轮播图点击切换&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…...