HATEOAS(作为应用程序状态引擎的超媒体)建议是否暗示查询字符串不是 RESTful?
编辑:下面建议查询字符串可能与状态没有太大关系,因此这个问题令人费解。我建议除非客户端填写参数,否则 URI 具有查询字符串是没有意义的。如果客户端正在填写参数,那么它就是在掺假服务器提供的 URI,我想知道这是否违反了 RESTful 原则。
编辑 2:我意识到如果客户端将其视为不透明的查询字符串似乎是无害的(并且查询字符串可能是遗留的,因此很方便)。但是,在下面的答案之一中,引用了 Roy Fielding 的话说,应该将 URI 视为透明的。如果它是透明的,那么我认为鼓励掺假,这似乎淡化了 HATEOAS 原则。这种稀释是否仍然与 HATEOAS 一致?这就提出了一个问题,即 REST 是否需要像 URI 构建那样紧密耦合。
更新在这个 REST 教程http://rest.elkstein.org/建议 URI 构建是糟糕的设计并且不是 RESTful。它还迭代了@zoul 在接受的答案中所说的内容。
例如,“产品列表”请求可以返回每个产品的 ID,并且规范说您应该使用http://www.acme.com/product/PRODUCT_ID来获取更多详细信息。那是糟糕的设计。相反,响应应该包含每个项目的实际 URL:http://www.acme.com/product/001263等。是的,这意味着输出更大。但这也意味着您可以根据需要轻松地将客户引导到新的 URL
如果一个人正在查看此列表并且不想要他/她可以看到的内容,则可能会有一个“前 10 个项目”和一个“下一个 10 个项目”按钮,但是,如果没有人,而是一个客户端程序, REST 的这一方面似乎有点奇怪,因为客户端程序可能没有使用所有“ http://www ”。