用于 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}×tamp={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- py2.py3 -none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ba479d1ef665eeb47d1c71510dd18245becc4c82a6d94736c632e0d308d35e83 |
|
MD5 | 8f90815d1bf7b3a3c279126abd6dc680 |
|
布莱克2-256 | 3b8ec1cde19b416c5692d06cb3cd6de5db1833c974a5504028f912731c592ef6 |