编写restful api客户端。
wac的Python项目详细描述
要为restful api编写友好的客户机,您通常会执行 以下内容:
- 编写用于与服务器通信的http客户端命令。这些命令 执行诸如封送有效负载、转换错误、调用请求挂钩等操作。
- 将客户端反序列化的响应转换为资源对象(即 将响应对象化)。
- 建立查询(例如筛选、排序)以访问与某些资源匹配的资源 标准可能按特定顺序排列。
在理想情况下,客户端给用户一些近似ORM的东西。 为了你的资源。本图书馆旨在帮助您编写 客户机提供您正在使用的api符合一些基本的 惯例:
- 正确使用http。
- 使用类型和uri信息注释资源表示。
安装
简单:
$ pip install wac
或者如果您愿意:
$ easy_install wac
用法
我们来举个例子。这个例子的代码在example.py中。
- 首先导入wac:
importwac
- 接下来定义客户机的版本:
__version__='1.0'
- 同时定义默认情况下所有Clients将使用的配置:
default_config=wac.Config(None)
- 现在请友好地定义一个更新配置的函数:
defconfigure(root_url,**kwargs):default=kwargs.pop('default',True)kwargs['client_agent']='example-client/'+__version__if'headers'notinkwargs:kwargs['headers']={}kwargs['headers']['Accept-Type']='application/json'ifdefault:default_config.reset(root_url,**kwargs)else:Client.config=wac.Config(root_url,**kwargs
- 现在,大的一个,定义您的Client,这是用来与之交谈的 服务器:
classClient(wac.Client):config=default_configdef_serialize(self,data):data=json.dumps(data,default=self._default_serialize)return'application/json',datadef_deserialize(self,response):ifresponse.headers['Content-Type']!='application/json':raiseException("Unsupported content-type '{}'".format(response.headers['Content-Type']))data=json.loads(response.content)returndata
- 然后定义基Resource:
classResource(wac.Resource):client=Client()registry=wac.ResourceRegistry()
- 最后是你的实际资源:
classPlaylist(Resource):type='playlist'uri_gen=wac.URIGen('/v1/playlists','{playlist}')classSong(Resource):type='song'uri_gen=wac.URIGen('/v1/songs','{song}')
- 完成!现在你可以做这样疯狂的事情:
importexampleexample.configure('https://api.example.com',auth=('user','passwd'))q=(example.Playlist.query().filter(Playlist.f.tags.contains('nuti')).filter(~Playlist.f.tags.contains('sober')).sort(Playlist.f.created_at.desc()))forplaylistinq:song=playlist.songs.create(name='Flutes',length=1234,tags=['nuti','fluti'])song.length+=101song.save()
贡献
- 叉开它
- 创建您的功能分支(git checkout-b my new feature)
- 编写代码并测试
- 确保所有测试仍然通过(python setup.py test)
- 提交更改(git commit-am'add some feature')
- 推到分支(git push origin my new feature)
- 创建新的拉取请求
历史记录
0.21(2013-06-18)
- 需要请求>;=1.2.3。
0.19(2013-05-16)
- 允许请求版本<;=1.1.0。
0.14(2013-01-29)
- pin请求版本低于1.0,直到我们用请求测试它>;1.0。
0.12(2012-10-02)
- 修复resourcecolection.filter。
- 添加like和ilike过滤器。
- 次要的PEP8/格式更改。
0.11(2012-09-11)
- 修复配置副本。
0.10(2012-07-27)
- Python2.6兼容性。
0.9(2012-07-25)
- 保存序列化修复程序。
0.8(2012-07-25)
- 分页修复。
0.7(2012-07-20)
- 其他修复。
0.3(2012-05-28)
- 希望你喜欢。
0.2(2012-05-01)
- 成长的痛苦。
0.1(2012-04-01)
- 它还活着!