首页 > 解决方案 > 用于重载 GET 动词的 REST 策略

问题描述

考虑需要创建一个 GET 端点以使用 4 个选项之一获取成员详细信息(这在具有 RPC 调用的遗留应用程序中很常见)

  1. 通过ID获取会员
  2. 通过 SSN 获取会员
  3. 通过Phone和LastName的组合获取成员(都必须通过)

实现 REST 精神并提供这种灵活性的推荐策略是什么?

我能想到的一些选择是:

基于参数

/user/{ID}  
/user?ssn=?
/user?phone=?&lname=?

单独的端点

/user/{ID}
/user/SSN/{SSNID}
/user/{lname}/{phone}

用于自定义的 RPC

/user/{ID}
/user/findBySSN/
/user/findbycontact/

标签: rest

解决方案


REST 不在乎您对标识符使用什么拼写。

例如,想想你将如何在网络上做到这一点。您将提供表格,每组搜索条件一个。消费者会选择要使用的表单并提交表单,而无需知道 URI 是什么。

对于 HTML 表单,有特定的处理规则来描述如何将表单信息复制到 URI 中。该表单具有URI Template的方面。

URI 模板既提供了 URI 空间的结构性描述,也提供了在提供变量值时如何构造与这些值对应的 URI 的机器可读指令。

但是没有任何规则限制服务器提供 URI 模板,该模板指示客户端将变量值复制到路径段而不是查询字符串中。

换句话说,在 REST 中,服务器保留对自己的 URI 空间的控制。

您有时可能更喜欢使用路径段,因为它们具有层次结构,如果您希望客户端在表示中使用相对引用的相对分辨率 ,这可能会很方便。


推荐阅读