根据 https://tools.ietf.org/html/draft-nottingham-json-home-06 使用 JSON Home 页面的 REST API 客户端
项目描述
json_home_client
Python 中调用 http+json API 的客户端类。需要 Python 3.6+。
支持以下 JSON Home 页面: https://tools.ietf.org/html/draft-nottingham-json-home-06
安装
标准的 Python 软件包安装
pip install json-home-client
使用方法
导入 json_home_client 包并实例化一个客户端。
from json_home_client import Client
api = Client('http://api.example.com')
调用 API
result = api.call('foo', var1=arg1, var2=arg2)
print result.data
客户端类
class json_home_client.Client(base_url: str, version: str = None, username: str = None, password: str = None, user_agent: str = None, sni_hostname: str = None, client_cert_path: str = None, client_key_path: str = None, ca_cert_path: str = None)
Client 构造函数接受 api 的基本 URL、可选的请求版本标识符、用户名和密码。它还允许自定义 sni_hostname(当 url 使用 ip 地址时很有用)、客户端证书和密钥,以及自定义 CA 文件路径。
Client.base_url: str
构造函数中设置的基本 URL,只读。
Client.default_version: Optional[str]
用于接受头的默认版本信息。
Client.default_accept: MimeType
API 调用的默认接受类型。
Client.username: Optional[str]
在 HTTP 身份验证头中发送的用户名。
Client.password: Optional[str]
在 HTTP 身份验证头中发送的密码。
Client.user_agent: str
在请求中发送的 User-Agent 字符串。
Client.resource_names: Sequence[str]
可用的 API 资源名称列表。
Client.resource(name: str) -> Resource
获取一个命名的资源。
Client.add_resource(name: str, url: str) -> None
添加一个 URL 资源。
Client.set_version(name: str, version: str = None) -> None
为特定资源设置请求版本标识符。如果未设置,则将使用默认版本标识符。
Client.set_accept(name: str, content_type: Union[MimeType, Sequence[MimeType]]) -> None
为特定资源设置请求的 Content-Type(s)。如果未设置,则使用 'application/json'。
Client.get(name: str, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP GET 操作。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Client.post(name: str, payload: bytes, content_type: MimeType = None, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP POST 操作。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Client.post_form(name: str, payload: Mapping[str, Any] = None, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP POST 操作。如果存在有效负载,则将其进行 URL 表单编码。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Client.post_json(name: str, payload: Any = None, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP POST 操作。如果存在有效负载,则将其转换为 JSON。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Client.put(name: str, payload = None, content_type: MimeType = None, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP PUT 操作。如果存在有效负载,则使用提供的 Content-Type 将其发送到服务器。有效负载必须预先编码,并且不会被客户端处理。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Client.patch(name: str, patch: Mapping[str, Any] = None, content_type: MimeType = MimeType.JSON_PATCH, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP PATCH 操作。如果存在 patch,则将其编码为 JSON,并以 'application/json-patch' 的形式发送到服务器。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Client.delete(name: str, [kwargs]) -> Optional[Response]
对命名的资源执行 HTTP DELETE 操作。提供的任何命名参数都可以用于计算要调用的实际 URL。返回 Response 或 None(如果资源名称未知)。
Response 类
Response.status_code: int
响应的 HTTP 状态码。
Response.headers: Mapping[str, Any]
HTTP 响应头部的字典。
Response.conten_type: MimeType
响应的 Content-Type。
Response.encoding: str
响应的编码。
Response.data: Any
响应体。如果 contentType 是 json,则数据将被解码为原生对象。
Resource 类
描述可用 API 资源的性质。
Resource.template
调用资源时使用的 URITemplate。
Resource.variables
可能传递给资源的变量字典。键是变量名称,值是可用的变量 URL 标识符(如果有的话)(见 https://tools.ietf.org/html/draft-nottingham-json-home-06#section-4.1)。
Resource.hints
描述资源任何提示的 Hints 对象(见 https://tools.ietf.org/html/draft-nottingham-json-home-06#section-5)。
Hints 类
Hints.http_methods: Sequence[str]
资源可以调用的 HTTP 方法的列表。
Hints.formats: Mapping[str, Sequence[MimeType]]
每个 HTTP 方法可用的格式的字典。键是 HTTP 方法,值是可用 Content-Type 的列表。
Hints.ranges: Optional[Sequence[str]]
范围指定符的列表。
Hints.preferences: Optional[Sequence[str]]
资源支持的偏好设置的列表。
Hints.preconditions: Optional[Sequence[str]]
资源所需的前置条件的列表。
Hints.auth: Optional[Sequence[Mapping[str, str]]]
资源接受的授权方案列表。
Hints.docs: 可选[str]
资源的文档URL。
Hints.status: 可选[str]
资源的状态。
MimeType类
MimeType(mime_type: str = None, type: str = None, structure: str = None, subtype: str = None)
构造函数,接受mime_type,将被解析,或单独的组件。
MimeType.type: str
主要类型,例如:"application/json" -> "application"
MimeType.structure: 可选[str]
结构,例如:"application/json" -> "json", "application/vnd.app.v1+json" -> "json"
MimeType.subtype: 可选[str]
子类型,例如:"application/vnd.app.v1+json" -> "vnd.app.v1"
备注
资源名称可以是绝对URL或相对于API的基础URL的相对URL。
项目详情
json_home_client-1.1.1-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fb65875711874a7c53f2d0c39b02629073127e4e33f102593bd7c00a55124ebe |
|
MD5 | 8548106248590a5f637470f0e451e0f2 |
|
BLAKE2b-256 | fd92df18b7eee481d53f951adad8c308d680766e8636c0a1a06112f05fb574cf |