Skip to main content

用于 RESTful API 的轻量级客户端。

项目描述

安静的客户端精简版构建状态

具有有限功能的 RESTFul API 的精简客户端。

它提供:

  • restful_client_lite.APIClient: eve token-auth 应用程序的客户端
  • restful_client_lite.contrib.AliyunApiGatewayClient: aliyun DataService生成的api的客户端(仅GET支持)
  • restful_client_lite.contrib.WangduoyunApiClient: WangDuoYun 网多云 API 的客户

WIP.(在 v0.1.0 之前不稳定)

安装

最新发布派皮

管道:

pipenv install restful_client_lite

点:

pip install restful_client_lite

开发

管道:

pipenv install -e git+https://github.com/huandzh/restful-client-lite#egg=restful-client-lite

点:

pip install -e git+https://github.com/huandzh/restful-client-lite#egg=restful-client-lite

用法

假设我们Authorization:<token>在 header 中有一个 restful api 需要并使用 etag 来控制写入。

创建 API 客户端:

from restful_client_lite import APIClient
api = APIClient("<api_root>", {"token": "<token>"})

从网址获取:

res_get = api.get("<url>")

发布到网址:

res_post = api.post("<url>", data={"<key>": "<value>"})

补丁地址:

res_patch = api.patch("<url>", "<etag>", data={"<key>": "<value>"})

补丁url(提前自动获取etag):

res_patch = api.patch_auto_etag("<url>", data={"<key>": "<value>"})

删除网址:

res_delete = api.delete("<url>", "<etag>")

删除url(提前自动获取etag):

res_delete = api.delete_auto_etag("<url>")

APIClient创建自定义 api 客户端的子类:

def sign(url):
    """some function return signature"""
    ...
    return <signed url>

class CustomAPIClient(APIClient):
    """custom api client"""

    def auth_headers(self, f: Callable) -> Callable:
        """custom auth headers"""
        @wraps(f)
        def wrapper(*args, **kwargs):
            headers = kwargs.get("headers", {}).copy()
            url = args[0]
            headers.update({"Signature": sign(url)})
            kwargs["headers"] = headers
            return f(*args, **kwargs)

第三方 API

阿里云api网关

AliyunApiGatewayClient

  • 来自aliyun-api-gateway apis的支持GET(apis可能由DataService生成)
  • 处理授权标头
  • 不对url 参数进行排序
from restful_client_lite.contrib.aliyun import AliyunApiGatewayClient
api = AliyunApiGatewayClient(
    '<api_root>',
    {"app_id": '<app_id>',
    "app_secret": '<app_secret>'})
# make sure params in <url> are sorted
res = api.get('<url>')

网多云api

WangduoyunApiClient

  • 支持帐户 API
  • 支持graphql api
# client adds required authorization data for POST
api = WangduoyunApiClient(
    "<api_root>",
    {"user_key": "<user_key>",
    "user_secret": "<user_secret>"})
res = api.post("<url>")
# client provides `get_sign` to get authorization params
api = WangduoyunApiClient(
    "<api_root>",
    {"user_key": "<user_key>",
    "user_secret": "<user_secret>"})
sign, timestamp = api.get_sign()
url = "?user_key={user_key}&timestamp={timestamp}&sign={sign}&source_id={source_id}&query={query}".format(
    user_key=api.auth['user_key'],
    timestamp=timestamp,
    sign=sign,
    source_id="<source_id>",
    query="<query>")
res = api.get(url)

下载文件

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

源分布

restful-client-lite-0.0.5.tar.gz (8.6 kB 查看哈希)

已上传 source

内置分布

restful_client_lite-0.0.5-py2.py3-none-any.whl (8.2 kB 查看哈希

已上传 py2 py3