我有一个关于我的 REST API 中的 DELETE 端点的问题。
为了提供一些上下文,在我的前端中,我有一个带有服务器端分页的"客户端"表,因此每当我更改页面时,我都会向服务器发送一个请求,该请求返回如下对象:
{
"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 (https://www.apollographql.com/docs/react/data/queries/#refetching(。
如果您担心性能,还可以向 API 添加缓存(使用node-cache
,例如:https://www.npmjs.com/package/node-cache 或 AWS Redis:https://aws.amazon.com/redis/(,以便更快地发送以前看到的查询的响应。
没有 REST API 标准,但根据经验,DELETE
终结点尽可能无状态并返回状态代码为204
的空正文是很常见的(请参阅 https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#http-status(。
希望对您有所帮助!跟上良好的工作:)