我使用mongoose
作为mongodb
,并试图删除一条记录。一个标准的REST API应该在删除时返回一个204
响应。但是猫鼬正在返回200
return await ppc.deleteOne({ _id: id });
响应为deletedCount
data:
deletedCount: 1
status: 200
或
return await ppc.findOneAndRemove({ _id: id});
返回与body
相同的200
。是否有任何默认返回204
的delete
API ?
与spring boot
或spring data rest
一样,对于成功的删除请求,默认返回204
。我明白如果我需要响应体,我需要发送200
以获得适当的REST API约定。但是,如果我需要用mongoose, mongo db返回204
自己,我需要先检查deletedCount,我可以在后端或前端这样做,这是一个额外的工作。我想确保是否有一些设置或其他API将其默认为204
?
200
状态码的问题是mongoose
甚至为不存在的ID
返回200
。
你应该把Mongodb作为数据库的功能与你的应用程序返回的HTTP响应代码分开,两者之间没有关系。
200
是默认的"success"响应代码,因为它返回,因为你的应用程序成功地执行代码,没有错误。mongoose
或mongodb
不是返回状态的。
听起来你想要做的是在你的路由中加入一些基本的逻辑,就像这样:
const delResult = await ppc.deleteOne({ _id: id });
response.json({statusCode: 402, ...delResult})
使用mongoose
,你还可以预构建触发器,在某些操作之后执行,为你处理这种类型的自定义逻辑,这就是你如何避免整个应用程序中的代码重复。