将 HTTP 方法添加到 Spring HATEOAS 链接

Mrk*_*rkK 6 java spring spring-hateoas

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

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

{
    "href":http://localhost:8080/admin/users/john",
    "rel": "remove",
    "method": "DELETE"
}
Run Code Online (Sandbox Code Playgroud)

我找不到任何可以让我向链接添加“方法”的内容。

chr*_*ke- 2

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

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

DELETE http://localhost:8080/admin/users/john
Run Code Online (Sandbox Code Playgroud)

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

  • 我不得不反对。谁说资源**可以**删除?`remove` 使这一事实变得明确。如果丢失,那么客户端可以采取相应的行动,而不是尝试并得到错误。或者想象“rel=付款”。您可以通过 POST 方式向 John 付款,或者通过 GET 方式检索有关其付款的信息吗? (6认同)
  • PayPal 使用以下格式:[PayPal REST API](https://developer.paypal.com/docs/integration/direct/paypal-rest- payment-hateoas-links/) (3认同)
  • 由于时间不够,我想引用维基百科:__链接关系是 HATEOAS 的基础之一,因为它们允许用户代理理解可用状态转换的含义__。没错:状态转换。这就是业务应用程序的意义所在。如果你只做 CRUD 的东西,那么,是的,你不需要那种花哨的关系。顺便说一句:没有标准告诉你什么是有效关系。 (2认同)