跳转到主要内容

RestORM允许您将资源视为对象进行交互。

项目描述

Build Status

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上发布初始版本。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

restorm-setuptools-0.3.1.tar.gz (27.1 kB 查看哈希)

上传时间

由以下机构支持