官方 SDK 架构与设计不变性
所有 7 款官方 SmallPict SDK 严格遵循的统一设计原则、安全保证与高容错语义。
SmallPict 为当今主流开发语言倾力打造了 7 大官方 SDK,确保开发者在任何技术栈下均能获得高度一致、地道且坚如磐石的开发体验。
统一的四大核心操作接口
无论在何种编程语言或命名规范下,每款官方 SDK 均严格实现相同的 4 项底层操作:
| 接口方法名 | 功能作用描述 |
|---|---|
optimize(source, options) | 压缩、转码(AVIF, WebP, JPEG, PNG)并缩放本地图片、二进制 Buffer 或公网 URL |
getQuota() | 实时查询账户已处理字节数、月度套餐上限以及 CDN 流量消耗 |
purgeCdn(urls, purgeType) | 全球广播清除 SmallPict 边缘节点缓存 |
validateKey() | 非破坏性连通性健康检查与密钥有效性验证 |
辅助方法: getJobStatus(jobId) | 轮询查询大图片异步后台转码任务的执行状态与最终 CDN 下载地址 |
零泄露凭证脱敏安全机制 (Zero-Leak Redaction)
所有 SDK 均内嵌严苛的正规表达式脱敏引擎。Secret Key (sec_...) 与 API Key (sp_sdk_..., sp_wp_..., sp_test_...) 绝对不会在标准输出、调试日志或异常堆栈中明文打印:
TEXT
日志输出示例: "Request failed for key sp_sdk_9a8b...c4d3 and secret ***REDACTED***"高韧性请求管线与幂等控制
1. 结合抖动的指数退避重试 (Exponential Backoff with Jitter)
当遇到网络波动、HTTP 429(请求频次超限)或暂态 5xx 服务端错误时,SDK 会使用包含随机抖动的指数退避算法自动发起重试(默认最多重试 3 次):
TEXT
delay = baseDelay * (2 ^ (attempt - 1)) + jitter若响应头中附带了服务端的 Retry-After,SDK 会严格以其为准。
2. 自动注入 UUID v4 幂等键
所有变更类请求均由 SDK 底层自动注入唯一的 Idempotency-Key 请求头。网络抖动重试绝对不会引发重复扣除月度配额。
异常降级模式 (Fallback Modes)
所有 SDK 均支持通过 fallbackMode 参数定制业务容灾策略:
throw模式(默认): 当额度用尽时抛出强类型的QuotaExceededError异常供业务层捕获。passthrough模式: 针对稳定性第一的核心业务。当触发 HTTP 402(额度用尽)时,SDK 绝不中断应用,而是优雅返回原始未压缩的图片 Buffer(标记savingsPercentage: 0.0),保证业务永远不停机。