Web services 宁静的搜索。返回实际资源或URI?

Web services 宁静的搜索。返回实际资源或URI?,web-services,api,rest,search,hateoas,Web Services,Api,Rest,Search,Hateoas,对其他的东西都很陌生 我正在设计我的API,不确定应该从搜索查询返回什么。我假设我只返回与查询完全匹配的所有对象,但在阅读了一点有关的内容后,我想我应该返回一个URI列表,而不是 我可以看出,这有助于缓存项目,但我担心,获取实际对象信息所需的后续多个HTTP请求将产生大量开销 我误解了吗?返回对象实例或URI是否可以接受?记住“纯REST”和“真实世界REST”是两种完全不同的野兽,这一点很重要 首先,如何从查询返回URI列表?如果返回例如application/json,这肯定不会告诉客户端应

对其他的东西都很陌生

我正在设计我的API,不确定应该从搜索查询返回什么。我假设我只返回与查询完全匹配的所有对象,但在阅读了一点有关的内容后,我想我应该返回一个URI列表,而不是

我可以看出,这有助于缓存项目,但我担心,获取实际对象信息所需的后续多个HTTP请求将产生大量开销


我误解了吗?返回对象实例或URI是否可以接受?

记住“纯REST”和“真实世界REST”是两种完全不同的野兽,这一点很重要

首先,如何从查询返回URI列表?如果返回例如
application/json
,这肯定不会告诉客户端应该如何解释内容;因此,与HATEOAS冲突的带外信息(客户端神奇地已经知道在哪里寻找它需要的数据)已经在驱动交互


因此,为了回答您的问题:我发现返回对象实例而不是URI是可以接受的——但要小心,因为在一般情况下,这意味着您在生成所有这些数据时,甚至不知道客户机是否会使用它。这就是为什么您经常会看到一种混合方法:对象实例不是完整对象(即服务器拥有的部分信息没有返回),但是它们确实包含一个唯一的标识符,如果客户机选择这样做,它允许客户机获取所选对象的完整表示。

重要的是要始终记住,“纯休息”和“真实世界休息”是两种完全不同的动物

首先,如何从查询返回URI列表?如果返回例如
application/json
,这肯定不会告诉客户端应该如何解释内容;因此,与HATEOAS冲突的带外信息(客户端神奇地已经知道在哪里寻找它需要的数据)已经在驱动交互


因此,为了回答您的问题:我发现返回对象实例而不是URI是可以接受的——但要小心,因为在一般情况下,这意味着您在生成所有这些数据时,甚至不知道客户机是否会使用它。这就是为什么您经常会看到一种混合方法:对象实例不是完整对象(即服务器拥有的部分信息没有返回),但是它们确实包含一个唯一标识符,如果客户机选择这样做,它允许客户机获取所选对象的完整表示。

我将返回一个资源列表,其中包含指向这些资源的更多详细信息的链接

来自RESTFull Web服务食谱2010-Subbu Allamaraju

将查询的响应设计为集合的表示形式 资源。设置适当的过期缓存头。如果查询 不匹配任何资源,返回空集合


我将返回一个资源列表,其中包含有关这些资源的更多详细信息的链接

来自RESTFull Web服务食谱2010-Subbu Allamaraju

将查询的响应设计为集合的表示形式 资源。设置适当的过期缓存头。如果查询 不匹配任何资源,返回空集合