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"
}
相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
158 10
|
4天前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
24天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
19天前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
1月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
1月前
|
Python
Python格式
Python格式
28 5
|
2月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
148 3
|
2月前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
115 2
|
2月前
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!