以安静的方式处理区域

问题描述 投票:0回答:1

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

关于设计系统的最佳方法是什么,所以我们获得了最多的用途。

问题:

  1. 已创建函数,因此如果在未指定区域的情况下进行API调用,将返回所有区域的结果。这是明智的做法,还是最好指定一个区域?

  2. 以一种轻松的方式处理区域(ANZ,EMEA,印度,亚洲,AMER)的最佳方法是什么。我最初的想法是/ region / anz / userid / 123,但是如果我们要对用户进行全局搜索,则需要进行x次呼叫。这是更好的方法还是将区域添加到URL的末尾,如/ userid / 123?region = anz

rest api-design
1个回答
0
投票

我的最初想法是/ 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

这些都是fine。就通用组件而言,URI在语义上是不透明的。因此,您可以使用任何使人类感到幸福的东西。

当拥有相关资源的集群时,可以方便地使用URI模板容易描述的标识符。参见RFC 6570

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

GET /report?userid=123&region=global

当然,您可以具有仅重定向到“真实”目标uri的“ Web表单端点”,因此这无关紧要。

© www.soinside.com 2019 - 2024. All rights reserved.