Python:改造flask接口服务提供统一格式的返回数据

简介: Python:改造flask接口服务提供统一格式的返回数据

Flask视图函数默认是不能返回list对象和None的,如果返回数据不对,就会抛出异常


TypeError: The view function did not return a valid response. 
The return type must be a string, dict, tuple, Response instance, or WSGI callable, 
but it was a JsonResponse.

以下将Flask改造为视图函数返回支持list、dict、None


json_flask.py


# -*- coding: utf-8 -*-
from flask import Flask, jsonify
from json_response import JsonResponse
class JsonFlask(Flask):
    def make_response(self, rv):
        """视图函数可以直接返回: list、dict、None"""
        if rv is None or isinstance(rv, (list, dict)):
            rv = JsonResponse.success(rv)
        if isinstance(rv, JsonResponse):
            rv = jsonify(rv.to_dict())
        return super().make_response(rv)

接口统一的返回格式 json_response.py


# -*- coding: utf-8 -*-
class JsonResponse(object):
    """
    统一的json返回格式
    """
    def __init__(self, data, code, msg):
        self.data = data
        self.code = code
        self.msg = msg
    @classmethod
    def success(cls, data=None, code=0, msg='success'):
        return cls(data, code, msg)
    @classmethod
    def error(cls, data=None, code=-1, msg='error'):
        return cls(data, code, msg)
    def to_dict(self):
        return {
            "code": self.code,
            "msg": self.msg,
            "data": self.data
        }

使用改造后的JsonFlask对象


# -*- coding: utf-8 -*-
from flask import Flask
from flask_cors import CORS
from json_flask import JsonFlask
from json_response import JsonResponse
# app = Flask(__name__)
app = JsonFlask(__name__)
CORS(app, supports_credentials=True)
@app.route("/")
def index():
    return ['Tom', 'Jack']
@app.errorhandler(Exception)
def error_handler(e):
    """
    全局异常捕获,也相当于一个视图函数
    """
    return JsonResponse.error(msg=str(e))
if __name__ == '__main__':
    app.run(port=5001)

访问接口返回的数据


{
    "code": 0,
    "data": [
        "Tom",
        "Jack"
    ],
    "msg": "success"
}
相关文章
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
369 5
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
1022 77
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
1235 86
|
Python
Python格式
Python格式
219 5
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
477 2
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
807 2
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
473 0
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
561 2

推荐镜像

更多