如何在 HTTP DELETE 请求中发送复合主键?

问题描述 投票:0回答:1

我的数据库中有一个链接表,其中有两列:event_id 和 user_id。两者都是外键,它们一起形成复合主键。

通常,当向我的 api 发送 DELETE 请求时,URL 类似于 https://myurl/api/v1/user/:userId,并且 userId 参数将与 User 表中一行的主键相对应,这样我就可以唯一地识别要删除哪一个。

但是在此示例中,我需要通过 DELETE 请求发送两个 id 来识别要删除的正确行。我知道可以发送带有 DELETE 请求的正文,但不建议这样做。处理这个问题的最佳方法是什么?

rest http http-delete
1个回答
0
投票

处理这个问题的最佳方法是什么?

大多数情况下,使用POST就可以了。生成一个表格,允许客户提供符合其需求的标识符。从数据库中删除/计划删除行是隐藏在 API 外观后面的实现细节。

换句话说,可以像通过网络表单捕获信息一样处理它。


DELETE 用于资源,而不是实现细节。也就是说,如果我们想停止向发送的客户端发送表示

GET /0f7dde16-c413-4732-9f8d-b8e5c0dfb69f

然后我们依次发送这个请求:

DELETE /0f7dde16-c413-4732-9f8d-b8e5c0dfb69f

在 API 外观背后,您的服务器会弄清楚如何实现它。

这里的要点是,您很少需要发明一个新的 URI 来删除资源,因为您通常使用与读取资源相同的 URI。


您想要专门发明一个新的 URI 以便 DELETE 可以触发某些特定副作用的情况并不常见。

但是,当这是正确的方向时,资源标识符的通常规则适用:您必须使用与 RFC 3986 的生成规则一致的标识符,并且应该使用提供 URI 模板的拼写,如 中所述RFC 6570.

除了这两个限制之外,REST 并不关心;因此,请选择符合您当地惯例的任何拼写,以使您关心的人感到高兴。

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