標籤:
參考了一下公司 python 達人 rpc 介面級聯 api 調用
rpc.api.users.list()
rpc.api.login(username=‘‘,password=‘‘)
rpc[‘api/users‘](id=222)
寫了一個 demo,python 確實很簡潔,不到 30 行代碼搞定
# coding=utf-8class NameChain(object): def __init__(self,prefix,callback): self._prefix = prefix self._callback = callback def __getattr__(self,item): next_prefix = self._prefix + ‘/‘ + item return NameChain(next_prefix,self._callback) def __call__(self,**kw): self._callback(self._prefix,kw) def __getitem__(self,item): self._prefix = item return selfclass Service(object): def __init__(self): self._api = NameChain(‘api‘,self._invoke) def _invoke(self,method,params): print ‘******************‘ print ‘invoke method:‘,method if len(params) ==0: print ‘params is empty‘ return print ‘params is‘ for k,v in params.iteritems(): print k,‘:‘,v @property def api(self): return self._apis = Service()api = s.api# 調用方式一print ‘調用方式一‘# api/usersapi.users() # api/user params {"id",111,"name":"leslie"}api.user(id=111,name=‘leslie‘)# pai/user/tags api.user.tags() #api/user/tags/list params {"id",111,"session_id","love you forever"}api.user.tags.list(id=111,session_id=‘love you forever‘)# 調用方式二print ‘調用方式二‘api[‘api/users‘]()api[‘api/users‘](id=111,name=‘leslie‘)api[‘api/user/tags‘]()api[‘api/user/tags/list‘](id=111,session_id=‘love you forever‘)
python API url 級聯產生