一个用于在Jupyter笔记本中探索RESTful API的新兴小部件。
项目描述
Ipyrest
Ipyrest是一个用于探索RESTful API的Jupyter笔记本小部件。它有两个主要目标:提供一个类似于Postman的更方便的界面,并允许插件组件,从各种MIME类型的输出渲染器开始,例如GeoJSON,如下所示。
关于
在核心上,ipyrest是基于出色的requests包和同样出色的ipywidgets包的一个包装器。想法是在处理RESTful API时提供更多交互式探索能力。它通过允许您构建API调用请求并更快地了解您收到的响应来实现这一点。为此,您可以使用现有的请求和响应视图或构建自己的视图。它受到Postman的启发,但没有任何冗余,并且超越了它,确保您可以以您想要的方式扩展它。本质上,它是为数据科学家而不是网络开发者而设计的。
示例
from ipyrest import Api
# Fix content-type as it is not set for gists.
def reset_content_type(resp):
resp.headers['Content-Type'] = 'application/vnd.geo+json'
url = 'https://gist.githubusercontent.com/' \
'deeplook/71e9ded257cfc2d8e5e9/raw/f0cfbab5f266fcb8056e8aea046f1f222346b76b/2013.geojson'
Api(url, post_process_resp=reset_content_type)
功能
Ipyrest处理以下概念,实现了不同程度的支持:HTTP服务器、服务、请求、响应、数据、MIME类型、压缩、日志记录、缓存、超时、错误、视图、插件、测试和UI。
目前,以下插件可用于渲染HTTP响应的常见格式:纯文本、CSV、HTML、位图、SVG、JSON、GeoJSON、GPX、Protobuf(以及一些实验性的3D内容)。
主要依赖项是:Python >= 3.6、jupyter、ipywidgets、timeout_decorator、requests和vcr。插件依赖项:ipyleaflet、ipyvolume、geojson、qgrid、protobuf。测试依赖项:flask、mypy和pytest。
安装
可以从PyPI使用以下命令安装ipyrest的发布版本:
pip install ipyrest
可以从GitHub直接安装ipyrest的开发版本,或者下载/克隆并解压缩到其顶级目录中
pip install git+https://github.com/deeplook/ipyrest
pip install -e .
测试
在根目录下运行 pip install -r requirements_test.txt
和 PYTHONPATH=. pytest -s -v tests
。一些测试将自动在 tests/api_server.py
中启动一个本地 Flask Web 服务器,该服务器实现了一组用于本地测试的示例 API 端点。并且,其中一些测试需要为正在测试的相应 API 定义键/令牌作为环境变量。如果没有这些变量,这些测试将被跳过。
文档
目前,docs
文件夹仅是一个占位符。目前建议查看 examples/meetup.ipynb
,这是一个在聚会上展示的示例集合,主要是一个类似教程的例子。其中一些需要适当的 API 密钥。
如何贡献
- 检查是否有开放的问题或创建一个新的问题以开始围绕功能想法或某个 API(理想情况下无需身份验证)的故障或示例的讨论,例如从 Public APIs 的广泛集合中。
- 在 GitHub 上 Fork 存储库以开始对 master 分支进行更改(或从其分支)。
- 编写一个测试来显示错误已被修复或功能按预期工作。
- 发送一个拉取请求,并在它被合并并发布之前不断催促维护者。:) 确保将自己添加到 AUTHORS。
历史
0.1.0 (2018-11-24):
- 首次发布到 PyPI。
0.1.1 (2018-11-25):
- 次要测试重构。
- 次要代码/文本/格式更改。
- 次要打包清理。
0.1.2 (2018-11-26):
- 最后在 PyPI 上渲染 README.md。
- 为 qgrid 启用经典笔记本扩展。
0.1.3 (2018-11-27):
- 次要文本格式问题。
0.1.4 (2019-01-28):
- 将部分测试代码重构到 tools.py。
- 将 execute_request 函数包装为 Api 类的方法。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。