当前位置: 首页 > 面试题库 >

通过POST请求将数据从node.js服务器发送到node.js服务器

公孙涵育
2023-03-14
问题内容

我正在尝试通过一个POST请求将数据从一个node.js服务器发送到另一个node.js服务器。我在“客户端” node.js中执行的操作如下:

var options = {
    host: 'my.url',
    port: 80,
    path: '/login',
    method: 'POST'
};

var req = http.request(options, function(res){
    console.log('status: ' + res.statusCode);
    console.log('headers: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data', function(chunk){
        console.log("body: " + chunk);
    });
});

req.on('error', function(e) {
    console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('data\n');
req.write('data\n');
req.end();

该块或多或少是从node.js网站获取的,因此应该正确。我唯一看不到的是如何在options变量中包括用户名和密码以进行实际登录。这是我处理服务器node.js中的数据的方式(我使用express):

app.post('/login', function(req, res){
    var user = {};
    user.username = req.body.username;
    user.password = req.body.password;
        ...
});

如何将这些usernamepassword字段添加到options变量中以使其登录?

谢谢


问题答案:

发布数据仅是发送一个查询字符串(就像您在后面添加URL一样?)。

这需要Content-TypeContent-Length标头,因此接收服务器知道如何解释传入的数据。(*)

var querystring = require('querystring');
var http = require('http');

var data = querystring.stringify({
      username: yourUsernameValue,
      password: yourPasswordValue
    });

var options = {
    host: 'my.url',
    port: 80,
    path: '/login',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': Buffer.byteLength(data)
    }
};

var req = http.request(options, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log("body: " + chunk);
    });
});

req.write(data);
req.end();

(*)发送数据需要正确设置Content-Type标头,即application/x-www-form- urlencoded标准HTML表单将使用的传统格式。

application/json以完全相同的方式发送JSON()很容易;只是JSON.stringify()事先的数据。

URL编码的数据支持一种结构级别(即键和值)。在交换具有嵌套结构的数据时,JSON很有用。

最重要的是:服务器必须能够解释有问题的内容类型。它可能是text/plain或其他任何东西;如果接收服务器按原样理解数据,则无需转换数据。

application/json; charset=Windows-1252如果您的数据使用不寻常的字符集(例如,不是UTF-8),请添加一个字符集参数(例如)。例如,如果您从文件中读取它,则可能有必要。



 类似资料:
  • 问题内容: 我想做的事情: 使用jquery ajax请求将一些数据(例如json)简单地发送到node.js http服务器。 由于某种原因,我无法在服务器上获取数据,因为它从不触发请求的“数据”事件。 客户代码: 服务器代码: 如我所说,它永远不会进入请求的“数据”事件。 注释: 1.记录“收到请求”消息; 2.响应很好,无法使用数据将其返回给客户端。 有什么帮助吗?我想念什么吗? 谢谢大家。

  • 问题内容: 我正在尝试允许javascript与Node.js服务器通信。 POST请求(Web浏览器) 现在,Node.js服务器代码如下所示。在用于GET请求之前。我不确定如何使其与POST请求一起使用。 服务器(Node.js) 在此先感谢您的帮助。 问题答案: 以下代码显示了如何从HTML表单读取值。正如@pimvdb所说,您需要使用request.on(’data’…)来捕获正文的内容。

  • 问题内容: 关于此问题: 将cookie从一个请求传输/传递到nodejs /protractor中的另一个请求 我又拿了一个 我如何查看通过nodejs执行的完整请求(标头+正文)? 问题答案: 是的,您可以…您可以从完整的响应正文访问完整的请求- 我有一个如下所示的通用完整响应结构 您可以通过如下代码访问

  • 问题内容: 我有MySQL数据库服务器 我需要通过JSON更新和检索MySQL服务器中的数据 所以,我想知道如何做到这一点,并且让这个示例语句感到困惑: 这意味着我需要先编写与PHP服务器连接的应用程序代码,然后再编写php以连接数据库。 问题答案: 要将数据发送到服务器,您可以执行以下操作: 然后发送让说: 因此服务器上的AddAccelerationData.php文件为: 这是我最近使用的示

  • 我正在尝试使用POST提交表单,但我有一些来自 标记的额外数据,这些数据已存储到JS对象中。当我从JavaScript中点击时,我想把它发送到服务器。 我尝试做的是用事件发送

  • 我有这个代码: 当为 true(执行 POST 或 PUT 请求)时,此代码会引发 IOException,并且不会完成请求。我尝试对 重新排序、编写调用和流创建块,但没有排列工作。 在所有情况下,BufferedReader都工作得很好,不会抛出任何异常。< code>getQuery正确返回URL编码的字符串。 以下是来自IOExc的堆栈跟踪: 最终发生的是请求通过,但没有一个POST或PUT