我编写了一个使用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.js
response.write
和之间的区别response.send
。因为response.write
我可以设置标题并在其中写入内容,但是使用时无法对标题进行任何操作response.send
。当我用response.send
用setHeader()
还是writeHeader()
我得到这个错误:
http.js:691
抛出新的错误(“发送头后无法设置头。”);
^
错误:发送标头后无法设置。
还有另一件事。随着response.send()
我在屏幕上获得完整的HTML输出,如:
<!DOCTYPE html>\n<html>\n\t<head></head></html> ..... "bla bla bla"
但是有了response.write
我,我没有在屏幕上看到html,而只有文本"bla bla bla"
。
如果有人可以向我解释这些差异,那就太好了。
我response.send()
在docs中找不到,但是我假设.send()
将填写并发送响应,因此只能调用一次,而.write()
只会编写响应,但是您必须使用发送response.end()
这意味着您可以使用来编辑标题,.write()
因为尚未发送响应。
编辑 :
response.send()
是Restify Response API包装器的一部分
本文向大家介绍NodeJS和AngularJS之间的区别,包括了NodeJS和AngularJS之间的区别的使用技巧和注意事项,需要的朋友参考一下 如今,NodeJ和AngularJ都已广泛用于应用程序开发。两者之间存在显着差异。 以下是NodeJS和AngularJS之间的重要区别。 序号 键 节点JS AngularJS 1 类型 NodeJs基本上是跨平台的运行时环境,这是用JavaScri
问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。
问题内容: 我对和感到困惑。我有两本PHP书。一个说它们是相同的,但是另一个说它们是不同的。我以为他们也一样。 他们不一样吗? 问题答案: 是按位与。请参见按位运算符。假设您这样做: 是逻辑AND。请参阅逻辑运算符。考虑一下这个真值表:
问题内容: 这个问题已经在这里有了答案 : JavaScript比较中应使用哪个等于运算符(== vs ===)? (49个答案) 5个月前关闭。 和之间的区别是什么?我也看过和运算符。还有更多这样的运营商吗? 问题答案: 并且是严格的比较运算符: JavaScript具有严格和类型转换相等性比较。为了相等,要比较的对象必须具有相同的类型,并且: 当两个字符串在相同位置具有相同的字符序列,相同的长
问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:
问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。