You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask RESTful接口开发如何避免端点代码重复?

Flask RESTful重复接口代码优化方案

核心思路

两个接口的执行流程完全一致,仅存在两处差异化逻辑:全量查询时提取的用户字段不同、单用户查询成功的返回消息模板不同。最优方案是将固定流程封装为公共父类,仅把可变点抽成可配置的参数/方法,子类只需要声明差异化配置即可。

具体实现

第一步:封装公共父类

把重复的流程逻辑全部收敛到父类中,预留可变参数的配置位:

from flask_restful import Resource, request

# 公共父类,所有同逻辑接口都继承该类
class BaseUserResource(Resource):
    # 子类需要重写的可变参数
    extract_field = None  # 全量查询时需要提取的用户字段名
    success_msg_tpl = None  # 单用户存在时的返回消息模板

    def get(self):
        res_body = request.json
        name = res_body.get('name', None)
        if name is None:
            # 全量查询逻辑
            users = get_all_users()
            item_list = [user[self.extract_field] for user in users]
            return {"nameList": item_list}
        else:
            # 单用户查询逻辑
            user = get_user_data(user_info=name)
            if user:
                return {"Message": self.success_msg_tpl.format(user[self.extract_field])}
            else:
                return {"Error": "User does not exist"}

第二步:改写接口类

两个接口仅需要继承公共父类,声明自己的差异化参数即可:

# 接口1:查询用户名
class ClassOne(BaseUserResource):
    extract_field = "name"
    success_msg_tpl = "User {} exists!"
# 接口2:查询用户出生日期
class ClassTwo(BaseUserResource):
    extract_field = "dob"
    success_msg_tpl = "User dob is {}"

扩展说明

如果后续差异化逻辑变得更复杂(比如字段需要二次计算、返回结构不同),可以把可变逻辑抽为抽象方法,子类重写方法即可,不需要修改父类的通用流程。

优化收益

  • 完全消除重复代码,后续通用逻辑迭代(比如加参数校验、权限校验、异常捕获)只需要修改父类,所有子类自动生效
  • 新增同逻辑接口仅需要配置两个参数,开发效率大幅提升
  • 通用逻辑和业务逻辑完全分离,代码可维护性更强

内容的提问来源于stack exchange,提问作者Sravan JS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:57:03