我没有使用Express,但是我尝试提取POST数据然后发送json作为响应,没有运气

时间:2017-04-10 08:15:56

标签: json node.js

我仍然对node.js很新,所以请耐心等待。

我试图提取POST数据,然后发送json作为响应,但我似乎无法从POST请求中提取数据,更糟糕的是我无法找到不使用Express发送json的人的语法。它一直告诉我res.json不是一个函数。

编辑:我发现了json部分的问题,我是一个转储。我终于记得我被告知的事情,json被发送成串。

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

server = http.createServer(function (req, res) {
    try {
        var body = "";
        var post = qs.parse("");
        if (req.method == "POST") {
        res.writeHeader(200, {"Content-Type": "application/json"});
        req.on("data", function (data) {
        body += data;
        console.log(data); //It gives something like <Buffer xx xx xx ...>
        if (body.length > 1e6)
            req.connection.destroy();
        });
    req.on("end", function () {
        post = qs.parse(body);
        console.log(post.test); //It gives "undefined"
    });
    res.end(JSON.stringify({ a: 1 }));
    } catch(err) {
        console.dir(err);
        res.writeHeader(200, {"Content-Type": "text/plain"});
        res.end("Hi hi");
    }
});

server.listen(8000);
console.log("http start @8000");

有任何帮助吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

下面的

解决了字符串的日期(即将缓冲区转换为字符串

res.on('data', function(chunk) {  
    var textChunk = chunk.toString('utf8');  
    // console.log(textChunk); // will give you a stream of text from data
});

你可以将textChunk存储在ondata处理程序之外,然后在需要时使用它(比如说再次向用户返回相关数据)