0

对所有这些 REST 东西来说都是全新的。

我正在设计我的 API,但不确定我应该从搜索查询中返回什么。我假设我只会返回与查询完全匹配的所有对象,但是在阅读了一些关于HATEOAS的信息后,我想我应该返回一个 URI 列表吗?

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

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

4

2 回答 2

3

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

来自 RESTFull Web Services Cookbook 2010 - Subbu Allamaraju

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

于 2012-08-30T19:15:49.783 回答
2

恕我直言,重要的是要始终记住“纯 REST”和“现实世界 REST”是两个完全不同的野兽。

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

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

于 2012-08-30T19:14:32.007 回答