如下面发布的代码所示,我正在使用createServer
创建一个服务器。我想测试一下。因此,在浏览器中,我输入了以下URL:
http://localhost:3000/
http://localhost:3000/hello
我希望收到第一个if-condition
中声明的文本,因为前一个url是/
,我希望收到第二个if-condition
中声明的文本,因为后一个url是/hello
但上述案件均未发生。请你确认我的理解,并告诉我为什么网页浏览器显示没有React?
编码:
const options = {
keepAlive:true,
}
const functionListener = (req,res)=>{
console.log("headerSent:",res.headersSent())
console.log("statusCode :",res.statusCode ())
if (req.url == '/') {
res.writeHead(200, "succeeded",{ 'Content-Type': 'text/plain' });
// set response content
res.write('<html><body><p>This is default Page.</p></body></html>');
res.end(JSON.stringify({
data: 'default!',
}));
}
if (req.url == '/hello') {
res.writeHead(200, "succeeded",{ 'Content-Type': 'text/plain' });
// set response content
res.write('<html><body><p>This is hello Page.</p></body></html>');
res.end(JSON.stringify({
data: 'Hello World!',
}));
}
}
const server = http.createServer(options,functionListener => {
});
server.listen(port)
1条答案
按热度按时间qlvxas9a1#
要开始更改此:
对此:
你的第一个版本只是传递了一个空箭头函数作为参数,它的第一个参数名为
functionListener
,与你定义的同名函数没有任何联系。固定版本传递对您定义的
functionListener
函数的引用,以便http.createServer()
可以根据需要调用该函数。那么,同时发送HTML响应和JSON响应就没有意义了。选择一个或另一个,并设置
content-type
匹配。