当前位置: 首页 > 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博客

http://www.lryc.cn/news/95932.html

相关文章:

  • 【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器
  • 解锁新技能《基于logback的纯java版本SDK实现》
  • 你需要知道的云原生架构体系内容
  • 安全渗透--正则表达式
  • git如何撤销commit(未push)
  • Vue数组与字符串互转
  • Java编程实现遍历两个MAC地址之间所有MAC的方法
  • 用AXIS2发布WebService的方法
  • 嵌入式学习_Day 003
  • 常用的数据结构 JAVA
  • 基于机器视觉工具箱和形态学处理的视频中目标形状检测算法matlab仿真
  • 小白入门:sentence-transformer 提取embedding模型转onnx
  • 数据库应用:Redis持久化
  • js版计算比亚迪行驶里程连续12个月计算不超3万公里改进版带echar
  • 一文详解Spring Bean循环依赖
  • 基于PHP+ vue2 + element +mysql自主研发的医院不良事件上报系统
  • 微服务远程调用openFeign简单回顾(内附源码示例)
  • 【云计算小知识】云环境是什么意思?有什么优点?
  • 【搜索引擎Solr】Apache Solr 神经搜索
  • PostgreSQL 设置时区,时间/日期函数汇总
  • 性能测试Ⅱ(压力测试与负载测试详解)
  • 【Python入门系列】第十八篇:Python自然语言处理和文本挖掘
  • 【GD32F103】自定义程序库08-DMA+ADC
  • 集成了Eureka的应用启动失败,端口号变为8080
  • CMU 15-445 -- Timestamp Ordering Concurrency Control - 15
  • MURF2080CT/MURF2080CTR-ASEMI快恢复对管
  • 去除 idea warn Raw use of parameterized class ‘Map‘
  • 使用BERT分类的可解释性探索
  • web APIs-练习二
  • rpc通信原理浅析