我编写了一个使用 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;
现在我需要知道Node.jsresponse.write
和之间的区别response.send
。因为response.write
我可以设置标题并写入其中,但是当我使用response.send
. 当我使用response.send
withsetHeader()
或出现writeHeader()
此错误时:
http.js:691 throw new Error('不能在发送后设置标题。'); ^ 错误:发送后无法设置标头。
还有另一件事。随着response.send()
我在屏幕上获得完整的 HTML 输出,如:
<!DOCTYPE html>\n<html>\n\t<head></head></html> ..... "bla bla bla"
但是response.write
我没有在屏幕上看到 html 而只有 text "bla bla bla"
。
如果有人可以向我解释这些差异,那就太好了。