这基本上是最佳实践的问题。在我Rest API(我目前正在使用的)中,我有路由匹配PUT
和DELETE
请求的网址,例如/resources/{resourceID}
。 API的后面是SQL DB。Rest API更新/删除 - 检查资源是否存在?
一般情况下,执行在SQL数据库上不存在的资源ID DELETE
或UPDATE
查询没有给出错误,只有affectedRows
返回0
现在我对如何正确地执行这样的请求一个问题:
- 检查是否与给定的ID的资源是否存在之前
UPDATE
或DELETE
(其涉及额外的SQL查询) - 触发
UPDATE
/DELETE
无覆盖查询ut检查是否存在并检查SQL查询的结果,并在affectedRows == 0
的情况下返回HTTP 404
?
我个人比较喜欢后者。但是我可以想到其他DBMS(不是SQL或不关联)执行INSERT
,UPDATE
或DELETE
查询可能不会返回任何有关受影响行的信息。如何在这种情况下进行?
看看这里:https://github.com/for-GET/http-decision-diagram –