我有api呼叫让一个人的孩子和api删除人的孩子:
GET http://localhost:9000/api/person/1/children
DELETE http://localhost:9000/api/person/1/child/2
目前当有人打电话通过个人ID获取子女时,如果通话成功,则返回200,如果有孩子,则返回子列表,如果没有孩子,则返回空列表。如果有的话还有500个。
当你想通过他们的id删除一个人的孩子时,如果呼叫成功,我会返回200(如果我的数据库表中没有人和儿童ID组合,则返回200),如果有其他的话,则返回500.
我的问题是,如果我们之间没有任何关系,我应该给出更多的描述性错误吗?如果删除,db调用只返回1/0,所以要做这样的事情,这意味着我需要执行另一个db调用来检查它,或者告诉用户它的0是否没有发生任何事情(并且这个incase db调用没有找到记录)......
谢谢
答案 0 :(得分:0)
500错误只是一个通用服务器错误响应,我倾向于在尝试调用get或delete时使用404,因为这表明找不到资源,这可能是因为存在问题发送到API的内容(例如垃圾数据)或因为资源实际上不存在。
如果您想要进行额外的数据库调用完全取决于您,通常过早的优化不会带来太多好处。但是,如果你要面对1000次调用,那么最好让它失败并优雅地处理它而不是之前检查。
10.4.5 404 Not Found
服务器未找到与Request-URI匹配的任何内容。没有说明该病症是暂时的还是永久性的。如果服务器通过一些内部可配置的机制知道旧资源永久不可用且没有转发地址,则应该使用410(Gone)状态代码。当服务器不希望确切地说明请求被拒绝的原因,或者没有其他响应适用时,通常会使用此状态代码。