Node js中response.send和response.write的区别

2024-03-31

我编写了一个使用 Node js“restify”框架的小型 API。该 API 接收请求(实际上是“/”之后的任何内容),然后将该请求发送到另一台服务器。从服务器获取响应并将响应传递回原始请求源。对于这个 API,我同时使用 Restify 服务器和客户端。

下面是 API 代码,以便更好地理解。

var apiServer = require('apiServer');
apiServer.start();

var restify = require('restify');
var assert = require('assert');

function onRequest(request, response, next)
{
    var client = restify.createStringClient({ 
        url: 'http://example.com'
    });

    client.get('/' + request.params[0], function(err, req, res, data) {
        assert.ifError(err);

        response.setHeader('Content-Type', 'text/html');
        response.writeHead(res.statusCode);
        response.write(data);
        response.end();
    });
    next();
}

function start()
{
    var server = restify.createServer();
    server.get(/^\/(.*)/, onRequest);
    server.listen(8888);

    console.log("Server has started.");
}

exports.start = start;

现在我需要知道之间的区别response.write and response.sendNode.js 的。因为与response.write我可以设置标头并在其中写入,但当我使用时无法对标头执行任何操作response.send。当我使用response.send with setHeader() or writeHeader()我收到此错误:


http.js:691
    throw new Error('Can\'t set headers after they are sent.');
          ^
    Error: Can't set headers after they are sent.
  

还有一件事。和response.send()我在屏幕上得到完整的 HTML 输出,如下所示:

<!DOCTYPE html>\n<html>\n\t<head></head></html> ..... "bla bla bla"

但与response.write我在屏幕上看不到 html,只看到文本"bla bla bla".

如果有人能向我解释这些差异,那就太好了。


response.send(msg)等于response.write(msg);response.end();

意思是,send只能被调用一次,write可以多次调用,但是必须调用end你自己。

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

Node js中response.send和response.write的区别 的相关文章

随机推荐