用于连接到远程服务的简单API客户端。
simple-api-client的Python项目详细描述
简单Api客户端
用于连接到远程服务的简单API客户端。在
特点
以及创建和执行基于Json的API的常用方法 请求时,此库支持以下附加功能。在
- 添加基本和承载身份验证头的方便方法。在
- 添加签名Cookie的方便方法。在
- 所有请求的超时限制。在
- 全局或按请求重试限制,用于在API请求失败时重试。在
- 使用尽最大努力处理从API端点返回的格式错误的Json。在
- 每个响应都保证包含一个状态代码和格式良好的解析Json数据。
- 如果出现错误,数据中将始终包含一条错误消息。在
- 完全支持从API请求返回二进制数据(字节)。在
- 执行API请求时处理速率限制。可以将这些请求配置为在引发错误之前重试。在
安装
使用pipenv
安装和更新
pip install -U simple-api-client
使用
简单用例
^{pr2}$创建更具体的客户
创建此客户机是为了尽可能灵活地用作
更具体的客户端的基类。你只需要把
ApiClient
类并添加任何合适的方法。在
fromflaskimportgfromflaskimportcurrent_appasappfromsimple_api_clientimportApiClientclassMyServiceClient(ApiClient):defuse_cookie_auth(self,data):name=app.config.get("COOKIE_NAME")signing_key=app.config.get("COOKIE_SIGNING_KEY")signing_key_id="trusted-service"payload={"data":data}self.add_signed_cookie(name,payload,signing_key_id,signing_key)defget_remote_resource():returnself.get("/example/endpoint")
关于安全性的说明
重要的是要理解,当客户机初始化时使用头和 Cookie,这些将在客户端的生命周期内或直到 手动取消设置。如果你不想在这两个请求之间停留, 必须采取措施重置客户端。在一个 Flask应用程序这很容易 通过将客户端分配给特殊的'g' object来实现。在
fromflaskimportgfromflaskimportcurrent_appasappfromsimple_api_clientimportApiClient@app.before_requestdefsetup_api_client():g.client=ApiClient("http://www.example.com",app.logger)
然后为了使用它,导入'g'
fromflaskimportgresponse=g.client.get("/example/endpoint")
这种模式的好处是,每次flask请求都会重置客户端,因此您不必担心客户端中的过时数据。在
发展
生成管道要求通过测试并格式化代码
确保您的机器上安装了Python3.x(使用pyenv)。在
使用pipenv安装依赖项(确保包括开发和预发布包):
pipenv install --dev --pre
配置环境:
pipenv shell &&exportPYTHONPATH="$PWD"
运行测试:
pytest
或使用日志记录:
pytest -s
或覆盖率测试:
pytest --cov=./
用Black格式化代码:
black $PWD
释放
清理(.gitignored)dist
文件夹(如果有):
rm -rf dist
在setup.py
中插入版本号并构建:
python3 setup.py sdist bdist_wheel
Push to PyPi(在提示时使用ScholarPack凭证)
python3 -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
链接
- 项目
标签: