現(xiàn)在后臺(tái)的接口廣泛的采用了Restful風(fēng)格。本文給出了一種基于裝飾器的實(shí)現(xiàn)。簡(jiǎn)化了后臺(tái)接口的編寫(xiě)
主要思路
- 定義一個(gè)裝飾器。封裝接口的返回值
- 對(duì)于成功的情況,返回json數(shù)據(jù)。對(duì)于異常的情況,拋出異常。并且返回全局錯(cuò)誤碼
接口協(xié)議
接口返回格式為
- code: 如果code 為200,則代表成功,其他都為失敗
- data: 對(duì)應(yīng)的是接口的返回結(jié)果
- msg: 錯(cuò)誤編碼
下面為代碼實(shí)現(xiàn)
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')