使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)

Posted

技术标签:

【中文标题】使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)【英文标题】:Send POST JSON Data and Receive With Node.js (NO BODYPARSER) 【发布时间】:2020-04-10 12:55:18 【问题描述】:

我很沮丧,因为我无法从 html 发送或从 Node.js JSON 数据接收。我想我快要解决了,但我已经厌倦了几个小时的尝试。有人帮助我吗?

正如下面的代码,我的 VSCODE 中的响应为 null (req.body = null?)。

当我从 Insomnia 尝试时,没关系。当我从 HTML 表单尝试时,失败了。 * 我可以使用 BodyParser,但为什么从 Insomnia 发送作品而从 HTML Form 发送却不行?

//routes.js
    routes.post('/go', (req, res) => 
       console.log(req.body)
       return res.json( "Response": req.body )
    )

    <!DOCTYPE html>
    <html>
       <head>
          <title>API Correios</title>
       </head>

       <body>
          <form id="FrmQuery" action="http://localhost:3333/go" method="POST" enctype="application/json">
             <label for="sCepOrigem">Cep Origem</label><br>
             <input type="text" name="sCepOrigem" id="sCepOrigem"><br><br><br>

             <input type="text" id="jsonData"><br><br>

             <button id="send" type="button">Enviar</button>

          </form>  


          <script>
    document.querySelector('#send').addEventListener('click', (event) => 
                let sCepOrigem = document.querySelector('#sCepOrigem')
    
                var obj =  
                   "sCepOrigem": sCepOrigem.value, 
                ;
                
                var myJSON = JSON.stringify(obj);
    
                document.querySelector('#jsonData').value = myJSON
                document.querySelector('#FrmQuery').submit()
             )

          </script>

       </body>
    </html>

【问题讨论】:

【参考方案1】:

在 Web 浏览器的 javascript 中,您需要将其作为原始 XMLHttpRequest 发送:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

其他可能性是 jQuery 的 $.ajax 或者可能是新的 fetch API。

【讨论】:

【参考方案2】:

根据我使用 node js 的经验,我相信你必须简单地 res.send 并删除 return 语句。

希望这会有所帮助。

【讨论】:

我想我已经尝试过了……你能给我举个例子吗? 对于新版本的 express,我认为需要 body 解析器才能访问 req.body

以上是关于使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)的主要内容,如果未能解决你的问题,请参考以下文章

Express.js 中的 POST 数据 JSON 验证

Node.js/ Express POST 请求正文被解析为不正确的 JSON

如何使用 Node.js 将 JSON 数据从 Node.js 发送和获取到 HTML

如何在 express node.js POST 请求中接收 JSON?

从 Swift 4 向 Node.js 发送 post 请求

在 node.js 中使用 pug 在表单“post”之后发送空