如何优雅的封装Restful接口

现在后台的接口广泛的采用了Restful风格。本文给出了一种基于装饰器的实现。简化了后台接口的编写

主要思路
  • 定义一个装饰器。封装接口的返回值
  • 对于成功的情况,返回json数据。对于异常的情况,抛出异常。并且返回全局错误码
接口协议

接口返回格式为

  • code: 如果code 为200,则代表成功,其他都为失败
  • data: 对应的是接口的返回结果
  • msg: 错误编码
下面为代码实现
from functools import wraps
import json

def response(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    try:
      result = func(*args, **kwargs)
    except RuntimeError as info:
      return json.dumps({
        "code": 200,
        "data": None,
        "msg": info.args[0]
      })
    else:
      return json.dumps({
        "code": 100,
        "data": result,
        "msg": ""
      })
  return wrapper
用例
@response
def demo():
  if True:#正常返回
    return {"name": "1"}
  else:#异常情况
    raise RuntimeError('100001')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • error code(错误代码)=2000是无效的像素格式。error code(错误代码)=2001是指定的驱动...
    Heikki_阅读 6,177评论 0 4
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 8,738评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,750评论 0 38
  • 公司:宁波大发化纤有限公司 姓名:陆小燕 期数:六项精进234期学员 组号:利他三组 [日精进打卡第93天] [知...
    牛妈牛妈阅读 1,013评论 0 0

友情链接更多精彩内容