SurveyGizmo的restful API服务的Python包装器。
项目描述
为SurveyGizmo的大多数restful API服务提供的Python包装器。
需求
python: 2.7, 3.4, 3.5, 3.6
安装
$ pip install SurveyGizmo
使用
首先实例化SurveyGizmo对象并提供一些配置参数。也可以通过config属性设置选项。
from surveygizmo import SurveyGizmo
client = SurveyGizmo(
api_version='v4'
# example token from SurveyGizmo docs
api_token = "E4F796932C2743FEBF150B421BE15EB9"
api_token_secret = "A9fGMkJ5pJF1k"
)
# Update client options through the config property.
client.config.api_token = "E4F796932C2743FEBF150B421BE15EB9"
client.config.api_token_secret = "A9fGMkJ5pJF1k"
API调用是通过对象类型然后是函数进行的。例如,
client.api.survey.list()
client.api.survey.get('39501')
client.api.survey.copy('39501', 'New title boop')
client.api.surveyresponse.list('39501')
大多数资源都有列表、获取、创建、更新、复制和删除操作。如果SurveyGizmo的REST API没有实现操作,客户端将引发NotImplementedError。
身份验证
基于令牌的身份验证是当前唯一支持的认证方法。自2016年5月31日起,user:pass和user:md5已被弃用。目前不支持OAuth,但欢迎pull请求。
令牌
client.config.api_token = 'E4F796932C2743FEBF150B421BE15EB9'
client.config.api_token_secret = 'A9fGMkJ5pJF1k'
API过滤
SurveyGizmo的API支持对调查、调查活动和调查响应上的list调用进行过滤。有关更多信息,请参阅SurveyGizmo的过滤文档。
过滤实现并不包含真正的魔法,它只是对尴尬的过滤语义的一个便利包装。没有对哪些资源可以执行过滤或对资源进行过滤的属性类型的强制要求。
要过滤,只需
filtered = client.api.surveyresponse.filter('datesubmitted', '<=', '2013-07-01')
filtered.list('39501')
过滤也可以链式调用。
client.api.survey.filter('createdon', '<=', '2013-04-01').list()
...
client.api.surveyresponse \
.filter('datesubmitted', '<=', '2013-07-01') \
.filter('datesubmitted', '>', '2013-06-01') \
.list('39501')
配置参数
api_version - ‘v3’,‘v4’,‘head’。默认为‘head’
api_token
api_token_secret
response_type - None,'json','pson','xml','debug'。默认情况下(使用 None),API 返回 JSON 响应,由客户端解析为 Python 字典。指定 response_type 将返回指定格式的未解析正文。
requests_kwargs - 传递给 requests.get 的额外参数。用于设置超时以及配置请求库。
prepare_url - 强制客户端在准备后返回 URL 而不是执行 API 调用。这在需要异步调用 API 的情况下很有用。默认为‘False’
handler52x - CloudFlare 的 52x 错误处理器。期望一个可调用的(例如,surveygizmo.default_52xhandler)。默认为‘None’。
CloudFlare 52x 错误
在 SurveyGizmo 迁移到 CloudFlare 之后,看到服务临时不可达的连接问题并不少见。这些错误存在于 HTTP 状态码的 52x 范围内。要自动处理 52x 错误,为 config.handler52x 设置一个可调用的。在 surveygizmo.default_52xhandler 下提供了一个基本处理器,它简单地每秒重试请求,直到返回非 52x 响应。
API 资源
变更日志
1.2.3
21 使 ‘base_url’ 可配置。
取消对 python 3.3 的显式支持。
1.2.2
17 添加了基本的分页支持。感谢 @WesleyBatista!
1.2.1
将 _prepare_url 参数添加到 API 调用中,它覆盖了 prepare_url 的配置设置。
1.2.0
重新实现了 API 导入为元类。
重新实现了过滤,移除了竞争条件。
1.1.0
为各种 API 调用(主要创建)添加了必需参数。
1.0.0
1.0.0 是整个 API 的重新实现。已添加测试,并且该包基本上是稳定的。
将所有身份验证方法替换为基于令牌的身份验证。
重写 API 以使用类继承而不是模块函数包装。
删除了 preserve_filters 选项。
将 add_filter 重命名为 filter。过滤器是链式调用的。
0.2.0
0.2.0 是一个向前不兼容的版本,但只有轻微的变动。
向前不兼容的更改
将 'change' 操作重命名为 'update'。这符合 SurveyGizmo API 的命名。
删除了用于在 API 函数调用之间保留过滤器的 'keep' 关键字参数。现在使用 'preserve_filters' 进行配置。现在使用 api.clear_filters() 手动清除过滤器。
删除了未记录的 'url_fetch' 关键字参数,该参数阻止 API 执行并返回已准备的 URL。
向后不兼容的更改
修改了 'api_version',使其不再对客户端有任何影响。SurveyGizmo 提供了没有意义地区分 API 版本的方法,因此这项检查是不必要的,并且创建了代码重复。
添加了 'prepare_url',作为 'url_fetch' 的替代。这强制客户端在准备后返回 URL 而不是执行 API 调用。这在需要异步调用 API 的情况下很有用。
添加了 'requests_kwargs'。这些是传递给 requests.get 的额外参数。用于设置超时以及配置请求库。
增加了对CloudFlare 52x错误的处理
发布流程
在 setup.py 中更新软件包版本
为版本创建git标签
将发布版本上传到PyPI
$ pip install -U pypandoc setuptools wheel $ rm -rf dist/ build/ $ python setup.py sdist bdist_wheel upload
版权 & 许可
版权 © 2013-2016 北卡罗来纳州立大学。详情请见 LICENSE。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。