Javascript RESTAPI删除请求和更新分页

Javascript RESTAPI删除请求和更新分页,javascript,node.js,reactjs,rest,Javascript,Node.js,Reactjs,Rest,我有一个关于RESTAPI中删除端点的问题 为了提供一点上下文,在我的前端有一个带有服务器端分页的“clients”表,因此每当我更改页面时,我都会向服务器发送一个请求,该请求返回一个如下所示的对象: { "items": [{id: 1, name: 'foo'}, {id: 2, name: 'bar'}, {id: 3, name: 'buzz'}], "itemCount": 3, "totalItems": 56, "pageCount": 19,

我有一个关于RESTAPI中删除端点的问题

为了提供一点上下文,在我的前端有一个带有服务器端分页的“clients”表,因此每当我更改页面时,我都会向服务器发送一个请求,该请求返回一个如下所示的对象:

{
    "items": [{id: 1, name: 'foo'}, {id: 2, name: 'bar'}, {id: 3, name: 'buzz'}],
    "itemCount": 3,
    "totalItems": 56,
    "pageCount": 19,
    "next": "http://localhost:3000/api/clients?page=2&limit=3",
    "previous": "",
    "currentPage": 1
}
当我删除或修改客户机时,我希望返回客户机列表的更新版本,但我不确定在不发送页面上的信息和每页限制的情况下,最好的方法是什么

我想到的解决这个问题的办法是:

  • 我可以通过请求发送页面信息和每页限制,并在删除客户端后在我的删除端点中检索信息。然而,这似乎效率很低,因为我将向端点添加这些额外的信息,不仅针对客户机,也针对其他模型,例如,对于产品,我也有同样的问题

  • 我可以在我的前端发送一个删除请求,完成后,我可以单独请求获取更新的信息(甚至可以并行?)。但由于额外的网络请求,这似乎也很低效


解决这个问题最好的办法是什么?

有趣的问题。我建议发送另一个
GET/clients
请求来获取更新的数据,而不是依赖
DELETE
端点来提供数据。这样,您就可以将
GET
DELETE
逻辑分开,而不必在API的代码中重复自己

这种方法可能看起来很浪费,但感觉更干净,API的使用者可以利用它以编程方式将数据重新写入GraphQL/Apollo()

如果您关心性能,还可以将缓存添加到API中(使用
节点缓存
,例如:或AWS Redis:),以便更快地发送以前看到的查询的响应

没有REST API标准,但根据经验,
DELETE
端点尽可能无状态,并返回状态代码为
204
的空主体(请参阅)


希望有帮助!继续做好工作:)

谢谢您的回复!我主要担心的是有两个独立的网络请求可能会影响性能,但是缓存数据是一个好主意。我认为这是一个很好的解决方案,所以我要试一试!伟大的如果答案适用于您的问题,请选择它作为适当的回答,以帮助可能有类似问题的其他人:)