HTTP - PUT 方法返回状态 200 但没有数据放入数据库

Posted

技术标签:

【中文标题】HTTP - PUT 方法返回状态 200 但没有数据放入数据库【英文标题】:HTTP - PUT method returns status 200 but no data being put into the database 【发布时间】:2022-01-08 09:34:34 【问题描述】:

我是新手,不知道为什么我的 PUT 请求没有将数据插入数据库。

    const orderId = JSON.stringify(1000 + Math.floor(Math.random() * 5000));

    await fetch(`http://0.0.0.0:9010/fdb/pos/collection/order/$orderId`, 
        "method": "PUT",
        "headers": 
            "Content-Type": "application/json"
        ,
        "body": JSON.stringify(
            merchantId,
            "_id": orderId,
            "lineItems": cartItems,
            "paymentIntent": paymentIntent.id,
            "status": "stripePendingPayment",
            "rejectedReason": "",
            "totalPrice": String(basketTotalPrice * 100),
            "updatedTs": new Date(),
            "createdTs": new Date()
        )
    ).then(r => console.log(r.status));

日志返回状态 200 但没有数据。它适用于 POST 方法,但不适用于 PUT。有人知道这是为什么吗?

任何意见都欢迎提前致谢。

【问题讨论】:

如果您获得了 200 OK,您预计会发生一些事情,但没有发生,那么这是服务器端问题。 【参考方案1】:

PUT 是用来更新数据的,也许这个方法只是说你成功更新了内容。

【讨论】:

是的,它显然接受了连接,但服务器上的数据丢失了。 查看这个方法的后端端点或与我们分享以更好地理解。此方法不会返回任何内容,只会更新您的数据,但没有代码我不确定。

以上是关于HTTP - PUT 方法返回状态 200 但没有数据放入数据库的主要内容,如果未能解决你的问题,请参考以下文章

状态码

更新和删除的 HTTP 状态码?

HTTP协议常见状态码

CORS 预检返回 200,但随后的 PUT 从未发生(带有外部 REST API 的 Angular JS)

HTTP常见状态码

如果 REST API 方法失败,我应该返回 200、400 还是 500 HTTP 状态消息?