RestORM允许您将资源视为对象进行交互。
项目描述
RestORM-setuptools
这是RestORM egg的一个分支
RestORM允许您将资源视为对象进行交互(类似Django,但完全独立于Django)。它可以模拟整个API,并在单元测试中将真实客户端替换为模拟版本。
描述
RestORM对访问RESTful API的方式进行结构化,并允许您轻松访问相关资源。它尽可能地通用,不针对任何特定API或后端API库进行定制。使用RestORM,您可以模拟整个API,并在单元测试中使用模拟版本替换真实客户端。RestORM非常易于扩展,但提供了许多开箱即用的功能,以帮助您快速启动。
目前,RestORM支持Python 2.5+,Python 3支持正在路上。
功能
API资源对象关系映射(类似Django,但完全独立于Django)。
灵活的客户端架构,可用于您自己的或第三方客户端(如oauth)。
广泛的模拟模块允许您模拟API响应,甚至整个API。
Twitter和Flickr API示例。
快速入门
这是教程的压缩版本。完整文档可以在这里找到。
创建客户端
一个典型的客户端,可以与使用JSON的RESTful API通信,最多不超过
from restorm.clients.jsonclient import JSONClient
client = JSONClient(root_uri='http://www.example.com/api/')
我们不是使用此客户端,而是模拟其预期行为。
创建模拟API
为了测试您的客户端,您可以使用MockApiClient模拟整个API,并添加预定义的响应。
下面的模拟API包含书籍列表和作者列表。为了简化,这两个列表资源都只包含1个条目
from restorm.clients.mockclient import MockApiClient
mock_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/'
)
定义资源
我们以主资源《书籍》资源开始,它作为《资源》的子类。内部《元》类中的两个属性指示了访问所有书籍(列表)和单个书籍(条目)的URL模式
from restorm.resource import Resource
class Book(Resource):
class Meta:
list = r'^book/$'
item = r'^book/(?P<isbn>\d)$'
汇总所有内容
您可以使用《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-setuptools
如果您想要最新开发版本,从Github获取代码
$ pip install -e git+git://github.com/goinnn/restorm.git#egg=restorm
变更
0.3.1
修复了小数序列化错误。改进了restify方法,使用资源客户端或JSONClient来避免小数错误。
0.3.0
修复pypi错误
0.3(beta)
删除distribute依赖
0.2
2012年12月4日
修复了《MockClient》中的错误,以弹出正确的响应。
添加了《restorm.conf.settings》以存储要使用的DEFAULT_CLIENT。
添加了从您的《MockApiClient》创建开发服务器的功能。
将《root_uri》参数添加到《Client》构造函数中。
添加了初始XML客户端实现(alpha)。
添加了初始文档。
添加了所需的简单json 2.2.1或更高版本作为库。
0.1
2012年11月9日
在PyPI上发布初始版本。