用于连接到远程服务的简单API客户端。

simple-api-client的Python项目详细描述


Build Status

简单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/*

链接

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java@AfterEach注释在Spring测试中被忽略   散列如何使用bouncy castle在Java中创建SHA512摘要字符串?   java无法使用Okhttp获取响应cookie   100个数的java阶乘   多线程如何在Java中实现对象计数器   java我的精灵不显示背景   java如何在com上应用PanelSlideListener。索特里。滑动面板。SlidengUpPanelLayout SlideUp库   java如何在JDBC中使用WHERE EXISTS函数   java Swing:标签前景中的白色被绘制为黑色   获取java的时间戳。util。另一个java的日期对象为(10/7/14)。util。日期对象(2014年10月7日星期二11:21:00)   java如何在Spring/OpenJPA 1中重新创建用于更新行锁定的选择   java在保存另一个maven项目中的类时,有没有办法让eclipse识别对该类的更改?   java如何解决Spring中的Servlet上下文错误?   java在mongodb中删除记录   显示的java片段与当前片段重叠,而不是替换它