我编写了一个使用 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.send
Node.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"
.
如果有人能向我解释这些差异,那就太好了。