如何優(yōu)雅的封裝Restful接口

現(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')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • error code(錯(cuò)誤代碼)=2000是無(wú)效的像素格式。error code(錯(cuò)誤代碼)=2001是指定的驅(qū)動(dòng)...
    Heikki_閱讀 2,192評(píng)論 0 4
  • error code(錯(cuò)誤代碼)=0是操作成功完成。error code(錯(cuò)誤代碼)=1是功能錯(cuò)誤。error c...
    Heikki_閱讀 3,536評(píng)論 1 9
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,246評(píng)論 0 38
  • 公司:寧波大發(fā)化纖有限公司 姓名:陸小燕 期數(shù):六項(xiàng)精進(jìn)234期學(xué)員 組號(hào):利他三組 [日精進(jìn)打卡第93天] [知...
    牛媽牛媽閱讀 114評(píng)論 0 0

友情鏈接更多精彩內(nèi)容