我正在建立一个API,我想遵循最佳实践,所以我使用PUT插入,POST更新和GET获取,我想在客户端请求删除项目时使用DELETE在数据库中我们实际上没有删除任何内容,我们只是更新一个标记,指示此项目已被删除,所以它仍然属于DELETE或该请求应该是改为POST?
答案 0 :(得分:3)
你所说的被称为“软删除” - 当记录被标记为删除时,它不能通过GET获得,但数据仍保留在数据库中。对于仍然是删除操作的所有客户端目的,实现是您自己的,不应该与您的客户有关。
所以是的,使用HTTP动词DELETE进行软删除是完全没问题的。
答案 1 :(得分:1)
从客户端的角度来看,数据不再存在(如果客户端调用GET端点,则无法看到该数据),因此您可以将DELETE谓词用于此端点。
要记住的一件重要事情是,如果最终用户来自欧盟国家,则保持GDPR合规(一般数据保护法规强制您根据请求删除用户私有数据。使数据不可用对用户,但将其保留在您的服务器上(通过将其标记为已删除)直接违反了用户权限。)
答案 2 :(得分:0)
正如其他人所说,你可以在这种情况下使用HTTP DELETE方法。
此外,您提到的其他标准中的小幅修正。必须是HTTP POST才能创建, PUT才能更新您的资源。