Digi-Key API 产品有一些共同原则,其中包括:
OAuth
Digi-Key API 实现了 OAuth 2.0 授权框架。Oauth2 框架是让第三方应用程序对受保护资源进行安全委托访问的行业标准方法。对 DK API 的每个请求都将需要访问令牌。
您需要熟悉 OAuth 2.0 及其如何使用授权码授予流程、授权端点、令牌端点、重定向端点、承载令牌和刷新令牌。授权码授予流程是唯一能访问 DK API 的方式。
TLS
为了保护双方的资源,所有 HTTP 流量皆使用 TLSv1.2 加密协议进行保护。客户端应用程序需按照使用 TLSv1.2 来开发。访问 DK 资源时,请验证端点并且端点使用 TLS。
访问控制
为了保护双方的资源,客户端应用程序的客户端 ID 和客户端密钥必须保持私有和安全。第三方应用程序会被分配一个客户端 ID 和客户端密钥。客户端 ID 和客户端密钥对于第三方应用程序是唯一的。ID 和密钥应加以保护,绝不能公开。
速率限制
DK API 产品具有速率配额。 根据产品级别应用速率限制。在产品级别,应用程序既有每分钟请求数的速率限制,也有每天请求数的限制。
以下速率限制适用于标准产品。
| 标准产品 | 每分钟速率限制 | 每天速率限制 |
|---|---|---|
| 条形码 | 每分钟 120 次 | 每天 1000 次 |
| 创建 BOM | 每分钟 10 次 | -- |
| 订单支持 | 每分钟 120 次 | 每天 1000 次 |
| 订购 | 每分钟 10 次 | -- |
| 产品信息 | 每分钟 120 次 | 每天 1000 次 |
| 报价 | 每分钟 10 次 | -- |
每个 API 响应都伴随着以下一组响应报头,以确定您的客户端应用程序的使用状态。
| 报头 | 描述 |
|---|---|
X-RateLimit-Limit | 允许客户每天发出的最大请求数量。 |
X-RateLimit-Remaining | 当前速率限制窗口中剩余的请求数量。 |
一旦应用程序达到速率限制窗口,该客户端应用程序就会收到一个状态码:
429 请求过多
如果超出触发限值窗口,响应报头将显示:
| 报头 | 描述 |
|---|---|
| Retry-After | 再次请求前需等待的秒数 |
| X-BurstLimit-Limit | API 允许的最大请求数,用“每分钟次数”表示 |
| X-BurstLimit-Remaining | 当前速率限制窗口中剩余的请求数量。 |
| X-BurstLimit-Reset | 等待触发限制窗口重置的秒数 |
| X-BurstLimit-ResetTime | 触发限制窗口重置时的时间,用 GMT(格林威治标准时间)表示 |
此外,JSON 响应消息类似如下:
{
"ErrorResponseVersion": "3.0.0.0",
"StatusCode": 429,
"ErrorMessage": "BurstLimit exceeded",
"ErrorDetails": "Please try again after the number of seconds in the Retry-After header",
"RequestId": "fa3e4d88-bfc4-4565-c6d5-a567633c091b",
"ValidationErrors": []
}
如果超出每天限值窗口,响应报头将显示:
| 报头 | 描述 |
|---|---|
| Retry-After | 再次请求前需等待的秒数 |
| X-RateLimit-Limit | API 允许的最大请求数量 |
| X-RateLimit-Remaining | 当前速率限制窗口中剩余的请求数量。 |
| X-RateLimit-Reset | 等待已超速率限制窗口重置的秒数 |
| X-RateLimit-ResetTime | 速率限制窗口重置的时间,用 GMT(格林威治标准时间)表示 |
此外,JSON 响应消息类似如下:
{
"ErrorResponseVersion": "3.0.0.0",
"StatusCode": 429,
"ErrorMessage": "Daily Ratelimit exceeded",
"ErrorDetails": "Please try again after the number of seconds in the Retry-After header",
"RequestId": "f4a0c1ab-8b47-4a72-e010-8ebe5d78f96c",
"ValidationErrors": []
}
状态代码
每个 API 都会记录待发送的状态代码。返回的响应代码遵循 RFC 22616 规范。返回的状态代码一般为:
| HTTP 状态代码 | 描述 |
|---|---|
200 OK | 成功。 |
400 错误请求 | 输入参数错误。 错误消息应指明哪一个以及原因。 不知何故,您的客户端请求格式错误/无效。 也可能是请求的零件未找到,但这种可能性极小。 |
401 未授权 | 客户端传入无效访问令牌。 客户端应刷新此令牌,然后重试。 或者您还没有将客户端应用订阅至 DK API 产品。 |
404 未发现 | 资源未找到。 |
405 方法不允许 | 资源不支持指定的 HTTP 动词。 您提交的请求使用了非预期格式。 例如,当需要以 POST 方式提供数据时,提交的却是 GET 请求。 |
429 请求过多 | 请求次数过多,超出速率限制。在特定时间内请求数量过多(>120 /分钟),或超过当前速率限制窗口允许的值。 |
500 内部服务器错误 | 服务器未按预期运行。 请求可能有效,但需要稍后重新请求。 |
503 服务不可用 | 服务不可用。 |
支持
有关访问或使用 DK API 的技术问题,请访问支持页面。