如何优雅的封装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')

你可能感兴趣的:(如何优雅的封装Restful接口)