将HTTP方法添加到Spring HATEOAS链接

问题描述 投票:3回答:5

我想知道是否可以将HTTP方法添加到使用Spring HATEOAS创建的链接。我希望链接看起来像:

{
    "href":http://localhost:8080/admin/users",
    "rel": "add",
    "method": "POST"
}

{
    "href":http://localhost:8080/admin/users/john",
    "rel": "remove",
    "method": "DELETE"
}

我找不到任何允许我在链接中添加“方法”的内容。

java spring spring-hateoas
5个回答
2
投票

这没有意义。 href指定某些资源的地址,rel说明它与当前资源的关系。 HTTP方法指示客户端想要对它做什么,这不是两者之间关系的一部分。

在您的示例中,"remove"关系没有意义:HTTP指定DELETE动词,以及语义

DELETE http://localhost:8080/admin/users/john

已经知道了。类似地,POST创建一个新资源,因此指定/admin/users足以让客户端列出用户(使用GET)或添加新用户(使用POST)。


1
投票

您应该使用关系“编辑”。

在Atom Pub RFC(http://tools.ietf.org/html/rfc5023)的(11.1)部分中,它定义了您可以将PUT / DELETE / GET请求发送到编辑关系的此URI。


0
投票

考虑在您指定的URI上实现HTTP OPTIONS。这将响应该资源的有效选项。它并不常用,但对我而言,OPTIONS是帮助客户了解所允许内容的完美方式。

优秀的博客文章:http://zacstewart.com/2012/04/14/http-options-method.html


0
投票

单独的链接关系应该能够指示客户端如何使用链接,所以我认为在链接中使用method参数将是多余的。链接关系的定义应该包含可接受的HTTP方法的详细信息。

此外,我认为method参数方法会使您的系统更容易混淆,更容易出错。

假设您有一个链接关系do-something,最初设计为仅允许POST。然后do-something的创建者希望改变该特性并仅切换到PUT。在链接中使用method参数会使您容易受到“真实来源”(链接关系定义)与提供链接的服务器之间的不一致。


0
投票

我基于Richardson模型设计了REST API; http://martinfowler.com/articles/richardsonMaturityModel.html

所有端点都使用HTTP方法返回“允许”链接。这种设计方法允许消费者知道要使用的HTTP方法,而不是计算要使用的方法。这很有用,因为有些操作使用POST或PUT。 POST用于创建资源或更改资源的状态。 PUT用于更新现有资源并删除以删除资源。

在链接中包含HTTP方法是一种强大的机制,使API的使用者能够知道如何调用API。

© www.soinside.com 2019 - 2024. All rights reserved.