zoukankan      html  css  js  c++  java
  • python API url 级联生成

    参考了一下公司 python 达人 rpc 接口级联 api 调用

    rpc.api.users.list()

    rpc.api.login(username='',password='')

    rpc['api/users'](id=222)

    写了一个 demo,python 确实很简洁,不到 30 行代码搞定

    # coding=utf-8
    
    class 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 self
    
    class 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._api
    
    s = Service()
    api = s.api
    
    # 调用方式一
    print '调用方式一'
    # api/users
    api.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')
  • 相关阅读:
    GYM
    GYM
    GYM
    【HIHOCODER 1320】压缩字符串(区间DP)
    【HIHOCODER 1133】 二分·二分查找之k小数
    【HDU 2028】Lowest Common Multiple Plus
    【HIHOCODER 1601】 最大得分(01背包)
    概率论基础【概率论的基本概念笔记】
    【HIHOCODER 1575】 两个机器人(BFS)
    【HIHOCODER 1576】 子树中的最小权值(线段树维护DFS序)
  • 原文地址:https://www.cnblogs.com/lesliefang/p/4521102.html
Copyright © 2011-2022 走看看