我是node.js的初学者。我创建了节点服务器并使用express编写简单程序,使用res.send()方法发送响应。如果用户访问路径如“/ repeat / hello / 5”,则应打印hello 5次,并且该单词之间有空格。示例: 你好你好你好你好你好
var express = require("express");
var app = express();
var animalsData = {
"dog" : "Bow Bow",
"cat" : "Meow",
"pig" : "Oink",
"horse" : "Hiha",
"lion" : "Roar"
}
app.get("/", function(req,res){
res.send("Hi there! Welcome to my asssingment.");
});
app.get("/speak/:animal", function(req, res){
var name = req.params.animal;
if(animalsData[name]){
res.send("The " +name+ " says '" +animalsData[name]+ "'.");
} else
res.send("I don't know what " +name+ " say.");
});
app.get("/repeat/:word/:times", function(req, res){
var word = req.params.word;
var times = parseInt(req.params.times);
for(var i = 1; i<= times; i++){
res.send(word);
}
});
app.listen(process.env.PORT, process.env.IP);
答案 0 :(得分:1)
答案 1 :(得分:1)
作为第一个答案,你可以做类似的事情。
app.get("/repeat/:word/:times", function(req, res){
var word = req.params.word;
var times = parseInt(req.params.times);
for(var i = 1; i<= times; i++){
word = ' ' + word;
}
res.send(word);
});
如果你想要一个流式api,请查看此文档server-send-events(sse)
答案 2 :(得分:1)
app.get("/repeat/:word/:times", function(req, res) {
var word = req.params.word;
var times = parseInt(req.params.times);
var x = '';
var y = word + ' ';
for (var i = 1; i <= times; i++) {
x += y;
}
res.send(x);
});
我尝试了这个,并且奏效了。
答案 3 :(得分:0)
通过将for循环包装在一个函数中,然后
res.send(functionName(times));
由于我还是初学者,所以我认为这不是最佳做法,但是它确实有效...
app.get("/repeat/:word/:times", function(req, res){
var word = req.params.word;
var times = parseInt(req.params.times);
var str = ''
function myFunction(n){
for(var i = 1; i <= times; i++){
str += word + ' ';
}
return str;
}
res.send(myFunction(times));
});
答案 4 :(得分:0)
除了使用res.send之外,还可以在循环外使用res.write然后再使用res.end,因为您只能发送一次响应,因此它无法在循环中工作。
app.get("/repeat/:word/:num", function(req, res){
var number = req.params.num;
var word = req.params.word;
var numnum = parseInt(number);
for(var i = 0; i < numnum ; i++ ){
res.write(" " + word + " ");
}
res.end();
});
答案 5 :(得分:-2)
在同一请求上再次发送响应将使您无法设置标头错误。
一个请求只能有一个响应。