【问题标题】:How to use the response of a fetch 'POST'?如何使用获取“POST”的响应?
【发布时间】:2020-09-25 22:09:27
【问题描述】:

我遇到了这个问题。我正在使用 fetch Post 方法在我的服务器中发布一个我称为“articulo”的对象。 现在我有这个帖子的代码:

async function postArticulo(articulo) {
    debugger
    const response = await fetch('http://192.168.100.3:3000/articulo', {
        method: 'POST',
        body: JSON.stringify(articulo)
    })
    const nuevoArticulo = await response.json();
    console.log(nuevoArticulo);
    return nuevoArticulo;
}

在我的服务器中,路由和响应是这样的(我在这里使用 express 依赖):

async postArticulo(req, res){
        const articulo = req.body;
        if(articulo) console.log(articulo.nombre + ' Good');
        articulo.codigo = 87654321; //This is just for checking if i could change some value of the object
        console.log(articulo.codigo);
        return res.json({
            nombre: `${articulo.nombre}`,
            proveedor: `${articulo.proveedor}`,
            rubro: `${articulo.rubro}`,
            stock: `${articulo.stock}`,
            costo: `${articulo.costo}`,
            coeficiente: `${articulo.coeficiente}`,
            codigo: `${articulo.codigo}`
        });
    }

我遇到的问题: 当我运行它并使用 fetch Post 方法发布对象时,我在服务器上得到了很好的结果,我可以读取和修改它。但是当我使用相同的对象从服务器发送响应时,我无法在客户端上打开它。我尝试了与客户端相同的方法,但通过 Imsomnia,服务器发送了我在其上发布的相同对象。在客户端上,我得到相同的对象,具有相同的属性,但除了数字之外,值始终是“未定义的”。 我已经在这个问题上停留了四天,无法继续解决这个问题。提前致谢。

编辑:在这里我添加了在使用 console.log 获取之前和之后检查对象的方式

之前: codigo: 12345678 coeficiente: "1.4" costo: "425" nombre: "Perro" proveedor: "Whiskas" rubro: "Alimento" stock: "3"

之后: codigo: "87654321" coeficiente: "undefined" costo: "undefined" nombre: "undefined" proveedor: "undefined" rubro: "undefined" stock: "undefined"

console.log(typeof req.body, req.body) 服务器端: 对象 { codigoArticulo: 87654321 }

【问题讨论】:

  • console.log(articulo); 长什么样子?
  • 我将编辑并添加它
  • 我的意思是当它是req.body时,它在节点控制台中是什么样子的
  • 请将console.log(typeof req.body, req.body)的结果也发布到服务器上。我敢打赌,它不是一个对象。 JSON 是如何在服务器上解析的?如果您使用的是标准库,则需要从客户端发送适当的内容类型请求标头以及数据。
  • 是的,你是对的,就是这样。在任何帖子中,我记得我说根本不需要,所以我从来没有说过。泰

标签: javascript post fetch-api


【解决方案1】:

错误在于没有将内容类型放入标头,因此服务器永远不会知道我真正发送的内容。

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多