以宁静的方式处理区域



我正在设计一个与不同地区的多台服务器通信的系统。同一请求的每个区域将返回唯一的结果,例如,用户 a 的设备配置在 ANZ 到 EMEA 中可能不同。

关于设计系统的最佳方式是什么,我们获得了最大的多功能性,提出了一些问题。

问题:

  1. 创建了一个函数,因此,如果在未指定区域的情况下进行 API 调用,则将返回所有区域的结果。这是明智之举还是强制指定区域更好?

  2. 宁静的方式处理地区(澳新、欧洲、中东和非洲、印度、亚洲、美洲(的最佳方式是什么?我的第一个想法是/region/anz/userid/123,但如果我们想对用户进行全局搜索,则需要进行 x 数量的调用。这是更好的方法,还是最好在 URL 末尾添加区域,例如/userid/123?region=anz

我的第一个想法是/region/anz/userid/123,但如果我们想对用户进行全局搜索,则需要进行 x 数量的调用。

REST 中的常见答案是创建一个资源来表示全局搜索结果。

GET /global/userid/123

会没事的。

GET /global?userid=123
GET /userid/123/global
GET /userid/123?global
GET /userid/123?region=global

这些也都很好。 就通用组件而言,URI 在语义上是不透明的。 所以你可以使用任何让人类快乐的东西。

当您拥有相关资源的群集时,使用 URI 模板可以轻松描述的标识符会很方便。 请参阅 RFC 6570。

在 Web 上,常见的 uri 模板机制是 HTML 表单的机制;表单处理规则要求在查询字符串上粘贴application/x-www-form-urlencoded值。 所以HTML友好的拼写可能看起来更像

GET /report?userid=123&region=global

当然,您可以拥有"Web 表单端点",这些端点只是重定向到"真正的"目标 URI,因此这并不重要。

最新更新