Skip to content

Commit

Permalink
adjustment
Browse files Browse the repository at this point in the history
  • Loading branch information
shigma committed Jun 7, 2024
1 parent f83be21 commit c6c40d2
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions zh-CN/advanced/resource.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,23 +126,23 @@ GET /v1/proxy/upload://temp/z0q9lgqb/3j6emd92-image1.png

- 如果 `url` 不是合法的 URL,会直接返回 400;
- 如果 `url` 不以任何一个 [`login.proxy_urls`](../resources/login.md) 中的前缀开头,会直接返回 403;
- 如果 `url` 是一个内部链接,会由该内部链接的实现决定如何提供此资源 (可能的方式包括直接返回数据、重定向以及资源无法访问的报错);
- 如果 `url` 是一个外部链接,会在 SDK 侧下载该资源并返回 (通常使用流式传输)。
- 如果 `url` 是一个内部链接,会由该内部链接的实现决定如何提供此资源 (可能的方式包括返回数据、重定向以及资源无法访问的报错);
- 如果 `url` 是一个外部链接 (即不以 `upload://` 开头的链接),会在 SDK 侧下载该资源并返回 (通常使用流式传输)。

## 最佳实践 {#best-practice}

综上所述,我们总结出了一套关于资源链接的最佳实践:

对于 SDK 开发者,你需要:

1. 提供 `registerUpload()` 方法用于注册内部链接路由,以便适配器实现;
2. 提供 `download()` 方法用于将一个链接下载为数据,无论是内部链接还是其他链接
1. 提供 `REGISTER_UPLOAD_ROUTE` 方法用于注册内部链接路由,以便适配器实现;
2. 提供 `DOWNLOAD_URL` 方法用于将一个链接下载为数据,无论其是否为内部链接
3. 基于本地文件系统实现内置的 `upload.create` API;
4. 基于上述 `download()` 方法实现代理路由。
4. 基于上述 `DOWNLOAD_URL` 方法实现代理路由。

对于适配器开发者,你需要:

1. 如果需要使用内部链接 (参见下一条):调用 `registerUpload()` 方法注册相应的路由;
1. 如果需要使用内部链接 (参见下一条):调用 `REGISTER_UPLOAD_ROUTE` 方法注册相应的路由;
2. 接收事件推送时:如果收到的资源链接符合内部链接的适用场景,将它们转化为内部链接;
3. 发送消息时:根据平台行为和资源链接的形式,合理选择下载和发送资源的方式;
4. 如果平台支持文件上传:实现 `upload.create` API,覆盖 SDK 的默认实现。

0 comments on commit c6c40d2

Please sign in to comment.