跳转到主要内容

使用urllib3构建良好的API客户端库框架。

项目描述

一个小巧的框架,借助urllib3构建良好的API客户端库。

亮点

  • 线程安全地重用带有Keep-Alive的连接(通过urllib3)。

  • 代码库小巧且易于理解,非常适合扩展和构建。

  • 内置对速率限制和请求节流的内置支持。

  • Klout APIFacebook OpenGraph API提供了功能示例。

示例

如何创建自己的超级简单的客户端API库

>>> from apiclient import APIClient
>>> class AcmePublicAPI(APIClient):
...    BASE_URL = 'https://:1234/'

>>> acme_api = AcmePublicAPI()

>>> acme_api.call('/hello')
{'what': 'world'}
>>> acme_api.call('/echo', params={"ping": "pong"})
{'ping': 'pong'}

如何向客户端API库添加速率限制,以便每分钟不超过10个请求

>>> from apiclient import RateLimiter
>>> lock = RateLimiter(max_messages=10, every_seconds=60)
>>> acme_api = AcmePublicAPI(rate_limit_lock=lock)

>>> # Get the first 100 pages
>>> for page in xrange(100):
...     # Whenever our request rate exceeds the specifications of the API's
...     # RateLimiter, the next request will block until the next request window
...     r = acme_api.call('/stream', page=str(page))

有关更具体的API示例,请参阅examples/目录。

扩展

为了处理不同的调用约定,apiclient可以通过子类化进行扩展。

例如,如果API要求所有参数都进行JSON编码,则可以将_compose_url方法实现如下

>>> class JSONArgsAPIClient(APIClient):
...     def _compose_url(self, path, params=None):
...         if params is not None:
...             params = dict((key, json.dumps(val))
...                            for (key, val) in params.iteritems())
...         return APIClient._compose_url(self, path, params=params)

或者如果API返回YAML而不是JSON,则可以重写_handle_response方法

>>> class YAMLResponseAPIClient(APIClient):
...     def _handle_response(self, response):
...         return yaml.load(response.data)

待办事项

  • 测试。

  • 更多文档。

  • 更多类型的API握手,例如OAuth和OAuth2。

  • 更多示例。

贡献

任何贡献都高度鼓励和欢迎。 :)

  1. 在GitHub上Fork。

  2. 进行更改。如果更改包括文档和测试,则可获得加分。

  3. 发送pull请求。

如果您不确定这是否是一个好主意,请打开问题联系我讨论您的建议。如果从列表中挑选一些项目,则可获得额外的高分。

许可证

MIT

更改

1.0.3 (2016-05-15)

  • Python 3修复。

1.0.2 (2011-10-20)

  • 修复了setup.py在安装时无法看到README.rst时的失败。

1.0.1 (2011-10-10)

  • 修复了setup.py包不包含MANIFEST.in的问题。

1.0 (2011-10-03)

  • 发布了SocialGrapple的解耦代码。

项目详情


下载文件

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

源代码分发

apiclient-1.0.4.tar.gz (4.9 kB 查看散列)

上传时间 源代码

支持