【发布时间】:2018-09-29 04:29:56
【问题描述】:
考虑需要创建一个 GET 端点以使用 4 个选项中的任何一个来获取成员详细信息(这在具有 RPC 调用的遗留应用程序中很常见)
- 通过ID获取会员
- 通过 SSN 获取会员
- 通过电话和姓氏的组合获取成员(两者都必须通过)
在实现 REST 精神的同时提供这种灵活性的推荐策略是什么?
我能想到的一些选项是:
基于参数
/user/{ID}
/user?ssn=?
/user?phone=?&lname=?
单独的端点
/user/{ID}
/user/SSN/{SSNID}
/user/{lname}/{phone}
用于自定义的 RPC
/user/{ID}
/user/findBySSN/
/user/findbycontact/
【问题讨论】:
-
由于客户端不应该解释 URI,而只能根据通过随附的链接关系名称所做的决定来调用它们,因此您使用哪种样式并不重要。更重要的是,您以某种方式命名链接关系名称,以便让客户端了解是否调用 URI。您甚至可以对参数进行编码,即通过 base64、自定义算法或其他不使用的算法,或者实际上使用 tiny-url。服务器至少需要知道如何以某种方式提取实际参数。
-
将 SSN 放在 url 中可能不明智。这是非常敏感的信息,而且网址有点泄漏。不要拿用户的隐私冒险。
标签: rest