[英]REST API Delete request and update pagination
我对 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 )。
希望能帮助到你! 跟上好工作:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.