欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Python进阶】无论API怎么变,SDK都可以根据URL实现完全动态的调用

程序员文章站 2022-04-20 10:38:23
现在很多网站都搞REST API,比如新浪微博、豆瓣啥的,调用API的URL类似:http://api.server/user/friendshttp://api.server/user/timeline/listhttp://api.server/users/:user/repos如果要写SDK,... ......

现在很多网站都搞REST API,比如新浪微博、豆瓣啥的,调用API的URL类似:

如果要写SDK,给每个URL对应的API都写一个方法,那得累死,而且,API一旦改动,SDK也要改

学习廖雪峰的定制类章节:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319098638265527beb24f7840aa97de564ccc7f20f6000

链式调用的方式实现

【Python进阶】无论API怎么变,SDK都可以根据URL实现完全动态的调用
  1 class Chain(object):
  2     def __init__(self, path=''):
  3         self.__path = path
  4 
  5     def __getattr__(self, item):
  6         return Chain('%s/%s' % (self.__path, item))
  7 
  8     def __call__(self, *args, **kwargs):
  9         return Chain('%s/%s' % (self.__path, *args))
 10 
 11     def __str__(self):
 12         prefix = 'http://api.server'
 13         return prefix + self.__path
 14 
 15     __repr__ = __str__
 16 
 17 print(Chain().user.friends)
 18 print(Chain().user.timeline.list)
 19 print(Chain().users('zhangsan').repos)
View Code