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')
  • 相关阅读:
    相机标定 和 单应性矩阵H
    全景视频拼接关键技术
    OpenCV图像变换(仿射变换与透视变换)
    用非数学语言讲解贝叶斯定理
    (二)SMO算法
    (一)SVM原理
    什么是赋范线性空间、内积空间,度量空间,希尔伯特空间
    决策树算法(五)——处理一些特殊的分类
    V8学习资源
    perforce 学习资源
  • 原文地址:https://www.cnblogs.com/lesliefang/p/4521102.html
Copyright © 2011-2022 走看看