接受 POST 请求的 Node.js 服务器

2023-12-08

我正在尝试允许 javascript 与 Node.js 服务器进行通信。

POST 请求(网络浏览器)

var http = new XMLHttpRequest();
var params = "text=stuff";
http.open("POST", "http://someurl.net:8080", true);

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

alert(http.onreadystatechange);
http.onreadystatechange = function() {
  if (http.readyState == 4 && http.status == 200) {
    alert(http.responseText);
  }
}

http.send(params);

现在 Node.js 服务器代码如下所示。在用于 GET 请求之前。我不知道如何让它与 POST 请求一起工作。

服务器(Node.js)

var server = http.createServer(function (request, response) {
  var queryData = url.parse(request.url, true).query;

  if (queryData.text) {
    convert('engfemale1', queryData.text, response);
    response.writeHead(200, {
      'Content-Type': 'audio/mp3', 
      'Content-Disposition': 'attachment; filename="tts.mp3"'
    });
  } 
  else {
    response.end('No text to convert.');
  }
}).listen(8080);

以下代码演示如何从 HTML 表单读取值。正如@pimvdb所说,您需要使用 request.on('data'...) 来捕获正文的内容。

const http = require('http')

const server = http.createServer(function(request, response) {
  console.dir(request.param)

  if (request.method == 'POST') {
    console.log('POST')
    var body = ''
    request.on('data', function(data) {
      body += data
      console.log('Partial body: ' + body)
    })
    request.on('end', function() {
      console.log('Body: ' + body)
      response.writeHead(200, {'Content-Type': 'text/html'})
      response.end('post received')
    })
  } else {
    console.log('GET')
    var html = `
            <html>
                <body>
                    <form method="post" action="http://localhost:3000">Name: 
                        <input type="text" name="name" />
                        <input type="submit" value="Submit" />
                    </form>
                </body>
            </html>`
    response.writeHead(200, {'Content-Type': 'text/html'})
    response.end(html)
  }
})

const port = 3000
const host = '127.0.0.1'
server.listen(port, host)
console.log(`Listening at http://${host}:${port}`)


如果你使用类似的东西Express.js and 身体解析器那么它看起来像这样,因为 Express 将处理 request.body 连接

var express = require('express')
var fs = require('fs')
var app = express()

app.use(express.bodyParser())

app.get('/', function(request, response) {
  console.log('GET /')
  var html = `
    <html>
        <body>
            <form method="post" action="http://localhost:3000">Name: 
                <input type="text" name="name" />
                <input type="submit" value="Submit" />
            </form>
        </body>
    </html>`
  response.writeHead(200, {'Content-Type': 'text/html'})
  response.end(html)
})

app.post('/', function(request, response) {
  console.log('POST /')
  console.dir(request.body)
  response.writeHead(200, {'Content-Type': 'text/html'})
  response.end('thanks')
})

const port = 3000
app.listen(port)
console.log(`Listening at http://localhost:${port}`)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接受 POST 请求的 Node.js 服务器 的相关文章

随机推荐

  • 使用 jQuery 获取元素的类列表

    jQuery 中有没有一种方法可以循环遍历或将分配给元素的所有类分配给数组 ex div class Lorem ipsum dolor spec sit amet Hello World div 我将寻找一个 特殊 课程 如上面的 dol
  • SignalR 事件在部署到服务器时变得间歇性

    当通过 VS IIS Express 在本地运行时 一切正常 100 然后 当我发布到网络服务器 在网络上或在线上 时 我有一些事件因 OnConnected 而停止触发 但并非总是如此 如果我刷新它可能会触发 也可能不会 有问题的事件是
  • VBA PowerPoint 在线指南以及如何录制宏

    谁能给我推荐一本好的 PowerPoint VBA 在线指南 另外 有人对如何在 PowerPoint 中录制宏有建议吗 Microsoft 从 PowerPoint 2007 中删除了宏录制器 要查看对象的结构 请在对象中使用 Watch
  • 如何用 PHP 或 JS 删除换行符

    我已经尝试了一切来删除一些多余的 n我正在使用的网络应用程序中的字符 我希望有人以前遇到过这个问题并且知道是什么原因造成的 我所有的 JS 和 PHP 文件都是 UTF 8 编码 没有 BOM 是的 我尝试过类似的事情 In JS text
  • 如何将货币格式的文本转换为 Double 值或 NSNumber 值?

    我想将货币转换为双倍值 在我的应用程序中 我有一个显示货币的文本字段 例如 1 234 567 00 美元 我可以通过子字符串轻松删除 符号 但是有没有任何 Formatter 样式可以使其成为 Double 呢 其实当我在做的时候 var
  • 使用 jQuery 查找元素的类型

    在 jQuery 中 如果我有一个元素的引用 我如何确定它是什么类型的元素 例如 输入或下拉列表 有什么办法可以查到吗 复制 如何确定 jQuery 中匹配元素的元素类型 如果元素是输入 则以下内容将返回 true elementId is
  • 短信收件箱 - 列表视图

    您好 我正在尝试创建 SMS 应用程序 女巫在 ListView 中向我显示 SMS 收件箱 但是 如果我打开此应用程序 则没有任何操作 我只能看到带有应用程序名称的黑屏 有人可以检查我的源代码并告诉我在哪里吗 有什么问题吗 谢谢 有源代码
  • 如何检测来自 CNAME 子域的传入请求(使用 PHP 脚本)?

    我们有一个简单的基于 php 的重定向应用程序 这是一个例子 Spiderman com redirection redirect to marvel php 脚本位于 redirection 文件夹中 假设它将上述链接重定向到 marve
  • mysql和DECIMAL存储空间?

    根据我对手册的理解DECIMAL在 mysql 文档中 它指出九个数字的每个倍数需要 4 个字节 其余数字如下 number of digits leftover bytes 0 0 1 1 2 1 3 2 4 2 5 3 6 3 7 4
  • 对与另一个数组相关的数组进行排序

    我有两个数组 x and y 其中 y 是中每个元素的十位值x 现在我想排序y 但是 顺序y将不同于x的 所以 在对哪个元素进行排序后我无法判断y例如 与x 0 也许我想要 双重排序 Array Sort has 超载接受two数组 一份用
  • 更新 MySQL 中的列

    我有一张桌子table1三列和一堆行 key col col a col b 我想用一组值更新 col a 即离开col b不变 像这样 INSERT INTO table1 AS t1 key col col a VALUES k1 fo
  • 将两个 UISplitViewController 子控制器保留在第一响应者链中

    我有一个基于文档的应用程序 其中 NSSplitViewController 作为主窗口的内容视图控制器 左窗格包含带有控制器的自定义视图 该控制器实现一些菜单命令 右窗格包含一个带有控制器的标准 NSTableView 当应用程序启动时
  • 基于 Eclipse JSDT 的编辑器的内容辅助

    在 Eclipse 中 内容辅助通常由某个类实现implements IContentAssistProcessor JavaDoc example 如何实现同样的CompletionProposals 用于基于 JSDT 的编辑器 我知道
  • 如何在整个应用程序中禁用 iOS 11 拖动?

    出于安全原因 我想在整个应用程序中禁用新的 iOS 11 拖放功能 更具体地说是拖动部分 在 iOS 11 中 默认情况下 所有可以选择文本的地方 弹出窗口 文本视图 网页视图等 的文本都会发生这种情况 我不知道有什么方法可以完全禁用拖动功
  • 使用提交消息中的主题标签在 Jenkins/Hudson 中触发构建

    仅当提交消息中出现特定字符串时 是否可以触发 Hudson Jenkins 构建 例如 我想触发一个构建 通过编写如下提交消息来将我的应用程序推出到开发环境 MYPROJECT 123 修复了 MyClass java 中的 NPE 部署
  • 如何检测 iOS 应用程序是否已重新安装(从 XCode)或升级(从 AppStore)

    我们正在开发的应用程序使用应用程序包中包含的二进制文件 由于需要处理该文件 并且在某些情况下需要重写该文件 因此应用程序会在首次启动时或每当应用程序支持中缺少该文件时 都会将此文件复制到 库 应用程序支持 目录中 然后 应用程序每次启动时都
  • 如何在开始滚动之前为 LazyColumn/ViewPager 设置阈值?

    我正在使用实验性浏览器Jetpack compose 是基于LazyColumn Row 我想做的是设置一些阈值 确定在开始滚动到下一页之前我需要移动手指多少 默认行为是 只要我移动手指 它就会开始滚动 但我希望有一个更大的阈值 即在发生任
  • Terraform 生命周期忽略更改

    我正在尝试对资源资源 aws servicecatalog provisioned product 中的参数应用生命周期ignore changes规则 如下所示 resource aws servicecatalog provisione
  • 如何递归地“扩展”XML/XSD 中的所有内容?

    是否有任何应用程序可以使用带有某些包含的 XML 文件 实际上是 wsdl 作为输入 并递归地浏览这些包含以生成最终的 XML 确实很大 并将目标包含合并到其中 说明 BDS 2006 WSDL 导入程序无法处理包含内容 并且导入的 xsd
  • 接受 POST 请求的 Node.js 服务器

    我正在尝试允许 javascript 与 Node js 服务器进行通信 POST 请求 网络浏览器 var http new XMLHttpRequest var params text stuff http open POST http