Skip to main content

Idiomatic UAPI SDK for Python

Project description

uapi-sdk-python

Banner

Python Docs PyPI

[!NOTE] 所有接口的 Python 示例都可以在 UApi 的接口文档页面,向下滚动至 快速启动 区块后直接复制。

快速开始

pip install uapi-sdk-python
from uapi import UapiClient

client = UapiClient("https://uapis.cn/api/v1")
result = client.social.get_social_qq_userinfo(qq="10001")
print(result)

[!TIP] 请使用与运行脚本相同的 Python 解释器安装依赖,例如执行 python -m pip install uapi-sdk-python 后再运行 python main.py。在 VS Code / Pyright 中若提示 “Import uapi could not be resolved”,将解释器切换到当前虚拟环境即可恢复补全。

特性

现在你不再需要反反复复的查阅文档了。

只需在 IDE 中键入 client.,所有核心模块——如 socialgameimage——即刻同步展现。进一步输入即可直接定位到 get_social_qq_userinfo 这样的具体方法,其名称与文档的 operationId 严格保持一致,确保了开发过程的直观与高效。

所有方法签名只接受真实且必需的参数。当你在构建请求时,IDE 会即时提示 qqusername 等键名,这彻底杜绝了在 dict/关键字参数中因拼写错误而导致的运行时错误。

针对 401、404、429 等标准 HTTP 响应,SDK 已将其统一映射为具名的异常类型。这些异常均附带 codestatusdetails 等关键上下文信息,确保你在日志中能第一时间准确、快速地诊断问题。

UapiClient(base_url, token, timeout) 默认使用 httpx 并自动追加 Authorization 头;需要切换环境或调整超时时,只要改一次构造参数即可。

如果你需要查看字段细节或内部逻辑,仓库中的 ./internal 目录同步保留了由 openapi-generator 生成的完整结构体,随时可供参考。

进阶实践

缓存与幂等

from functools import lru_cache
from uapi import UapiClient

client = UapiClient("https://uapis.cn/api/v1", token="<TOKEN>")

@lru_cache(maxsize=128)
def cached_lookup(qq: str):
    return client.social.get_social_qq_userinfo(qq=qq)

user = cached_lookup("10001")

也可以在 FastAPI / Django 项目里配合 Redis,将 SDK 的响应序列化后写入缓存,命中即直接返回。

注入自定义 httpx.Client

import httpx
from httpx import Auth
from uapi import UapiClient

class StaticToken(Auth):
    def __init__(self, token: str):
        self.token = token
    def auth_flow(self, request):
        request.headers["Authorization"] = f"Bearer {self.token}"
        yield request

http_client = httpx.Client(
    timeout=5,
    transport=httpx.HTTPTransport(retries=3),
    event_hooks={"request": [lambda request: print("->", request.url)]},
)

client = UapiClient(
    "https://uapis.cn/api/v1",
    client=http_client,
    auth=StaticToken("<TOKEN>"),
)

通过自定义 client / transport / auth,可以无缝植入代理、重试策略或 APM 埋点。

错误模型概览

HTTP 状态码 SDK 错误类型 附加信息
401/403 UnauthorizedError codestatus
404 NotFoundError / NoMatchError codestatus
400 InvalidParameterError / InvalidParamsError codestatusdetails
429 ServiceBusyError codestatusretry_after_seconds(用于决定何时重试)
5xx InternalServerErrorError / ApiErrorError codestatusdetails
其他 4xx UapiError codestatusdetails

其他 SDK

语言 仓库地址
Go https://github.com/AxT-Team/uapi-sdk-go
Python(当前) https://github.com/AxT-Team/uapi-sdk-python
TypeScript https://github.com/AxT-Team/uapi-sdk-typescript
Browser (TypeScript/JavaScript) https://github.com/AxT-Team/uapi-browser-sdk
Java https://github.com/AxT-Team/uapi-sdk-java
PHP https://github.com/AxT-Team/uapi-sdk-php
C# https://github.com/AxT-Team/uapi-sdk-csharp
C++ https://github.com/AxT-Team/uapi-sdk-cpp
Rust https://github.com/AxT-Team/uapi-sdk-rust

文档

访问 UApi文档首页 并选择任意接口,向下滚动到 快速启动 区块即可看到最新的 Python 示例代码。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uapi_sdk_python-0.1.10.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uapi_sdk_python-0.1.10-py3-none-any.whl (36.9 kB view details)

Uploaded Python 3

File details

Details for the file uapi_sdk_python-0.1.10.tar.gz.

File metadata

  • Download URL: uapi_sdk_python-0.1.10.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uapi_sdk_python-0.1.10.tar.gz
Algorithm Hash digest
SHA256 b0b55cf058e949e0b1c82b7d382fcec07ec70da88930dae888741dd35a3219da
MD5 527aac50a20afb9a9f0147693c23d383
BLAKE2b-256 c81ffb12a802ad6cc531a727c4be8a278228638e820bd4e5f71d6ce93da7306d

See more details on using hashes here.

File details

Details for the file uapi_sdk_python-0.1.10-py3-none-any.whl.

File metadata

File hashes

Hashes for uapi_sdk_python-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 21530c59bf31beac9c9a93788687cce1b2cc3b230b175634d20a59f18efe7164
MD5 624f8486051f52a57b8a5a32ab195a63
BLAKE2b-256 67f5c3861c3a6dcdee6d9936bcb88197ea39b9558259eb9e5aad8ea93a9b46f1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page