在Node.js中向客户端发送响应

5

无法将响应数据发送回客户端。出现错误,提示response.write()不是一个函数:

var express = require('express');
var app = express();
var request = require('request');

var port = process.env.PORT || 5000;
app.set('port', (port));

app.use(express.static(__dirname + '/'));
app.get('/', function(request, response) {
  response.render('/');
});

app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

app.post('/login', verifyLogin);

function verifyLogin(req, res, next) {
    var loginParams = {
        'username': req.body.username,
        'password': req.body.password
    };

    request({
        url: 'http://localhost:8084/xxx/auth', //URL to hit
        qs: {username: req.body.username, password: req.body.password},
        method: 'POST',
        json: {
            "username": req.body.username, "password": req.body.password
        }
        }, function(error, response, body){
        if(error) {
            console.log(error);
        } else {
        response.write(body); // ERROR here response.write is not a function
        return response;
    }
});

我已经在命令提示符控制台中获取了响应数据,但是如何将响应数据发送回客户端呢?


请使用response.send()或res.send()函数。 - Binit Ghetiya
2个回答

6

res.send() 用于向客户端发送响应。

function verifyLogin(req, res, next) {
    var loginParams = {
        'username': req.body.username,
        'password': req.body.password
    };

    request({
        url: 'http://localhost:8084/xxx/auth', //URL to hit
        qs: {username: req.body.username, password: req.body.password},
        method: 'POST',
        json: {
            "username": req.body.username, "password": req.body.password
        }
        }, function(error, response, body){
        if(error) {
            console.log(error);
        } else {
        //response.write(body); // ERROR here response.write is not a function

          res.send(body);// AND IT SHOULD BE USUALLY TRUE OR WITH THE OBJECT
//SO IT CAN ALSO BE 
             res.send(true);
//            return response;
        }
    });

例如,它被写作:
var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

app.listen(3000);

这是参考资料 http://expressjs.com/zh-cn/api.html


2
为什么没有人实际展示接收 web 请求、发起另一个 HTTP 请求并将数据返回给客户端的示例呢?为什么我找不到任何相关资料呢?这是最常见的情况,但我无法在任何地方找到它。 - rjurney

4

我认为你把response.writeres.write混淆了?

你正在使用request回调中的response,而不是app.post回调中的res


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接