restorm允许您与资源交互,就像它们是对象一样。
restorm的Python项目详细描述
恢复
restorm允许您与资源交互,就像它们是对象(object)一样 关系映射),模拟整个api并合并自定义客户机逻辑。
说明
restorm构建访问restful api的方式,并允许您轻松地 访问相关资源。它试图尽可能的通用,所以它不是 根据任何特定的API或服务器端API库定制用RestORM你可以 模拟整个api并用单元中的模拟版本替换真正的客户机 测验。restorm是非常可扩展的,但是提供了许多现成的功能 让你起来跑得快。
目前,restorm在python 2.5+上工作,同时还支持python 3。
功能
- api资源的对象关系映射(类似于django,但不依赖于 Django)。
- 扩展的模拟模块允许您模拟API响应,甚至 完成API。
- Twitter和Flickr API的示例
快速启动
这是本教程的压缩版本。完整的文档可以是 找到here。
创建客户机
一个可以使用json与restful api对话的典型客户机不再是:
fromrestorm.clients.jsonclientimportJSONClientclient=JSONClient(root_uri='http://www.example.com/api/')
我们取而代之的是这个客户,我们嘲笑它的预期行为。
创建一个模拟API
为了测试客户机,可以使用 MockApiClient并添加预定义的响应。
下面的mock api包含一个图书列表和一个作者列表。保留它 很简单,两个列表资源只包含一个项:
fromrestorm.clients.mockclientimportMockApiClientmock_client=MockApiClient(responses={'book/':{'GET':({'Status':200},[{'isbn':1,'title':'Dive into Python','resource_url':'http://www.example.com/api/book/1'}])},'book/1':{'GET':({'Status':200},{'isbn':1,'title':'Dive into Python','author':'http://www.example.com/api/author/1'})},'author/':{'GET':({'Status':200},[{'id':1,'name':'Mark Pilgrim','resource_url':'http://www.example.com/author/1'}])},'author/1':{'GET':({'Status':200},{'id':1,'name':'Mark Pilgrim'})}},root_uri='http://www.example.com/api/')
定义资源
我们从我们的主资源开始,Book资源作为 Resource。内部Meta类中的两个属性表示url模式 如何访问所有书籍(list)和单个书籍(item):
fromrestorm.resourceimportResourceclassBook(Resource):classMeta:list=r'^book/$'item=r'^book/(?P<isbn>\d)$'
将所有这些结合在一起
您可以访问Book资源和(创建的运行时)相关的 Author资源使用mock_client:
>>>book=Book.objects.get(isbn=1,client=mock_client)# Get book with ISBN number 1.>>>book.data['title']# Get the value of the key "name".u'Dive into Python'>>>book.data['author']# Get the value of the key "author".u'http://www.example.com/api/author/1'>>>author=book.data.author# Perform a GET on the "author" resource.>>>author.data['name']u'Mark Pilgrim'
安装
restorm在pypi上,因此您可以简单地使用:
$ pip install restorm
如果您想要最新的开发版本,请从github获取代码:
$ pip install -e git+git://github.com/joeribekker/restorm.git#egg=restorm
更改
0.2
2012年12月4日
- 修正了MockClient中弹出正确响应的错误。
- 添加了restorm.conf.settings以存储要使用的默认客户机。
- 添加了从MockApiClient创建开发服务器的功能。
- 已将root_uri参数添加到Client构造函数。
- 添加了初始XML客户端实现(alpha)。
- 添加了初始文档。
- 根据需要添加SimpleJSON 2.2.1或更高版本的库。
0.1
2012年11月9日
- 在pypi上发布的初始版本。