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"
}
相关文章
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
1077 77
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
1313 86
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
511 0
|
存储 算法 文件存储
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
520 2
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
851 2
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
1225 2

推荐镜像

更多