[英]request to server node.js
我正在了解节点中的请求。 我已经创建了简单的服务器
var http=require("http");
var fs=require("fs");
http.createServer(function(req,res){
switch(req.url){
case '/redirect' :
res.writeHead({"Location ":'/'});
res.end();
break;
case '/form.html' :
res.writeHead(200,{'Content-Type': 'text/html'});
req.setEncoding("utf-8");
var ws=fs.createReadStream("form.html")
var body="";
ws.pipe(body);
res.end(JSON.stringify(body));
break;
default:
res.writeHead(200,{"Content-Type": 'text/plain'});
res.end(JSON.stringify({
url:req.url,
method:req.method,
headers:req.headers
}));
}
}).listen(4001)
并请求脚本
var request=require("request");
var inspect = require("util").inspect;
request('http://localhost:4001/form.html',function(err,res,body){
if(err){
throw err;
}
console.log(inspect({
err:err,
res:{
statusCode:res.statusCode
},
body:JSON.parse(body)
}))
});
如果我正确理解(请求后的逻辑)= 1)请求脚本向服务器发出请求(默认获取)2)服务器脚本将注意到request,并确定由request.url执行的操作,这里我们在发出请求/form.html 3)服务器脚本将执行/ form / html case =将标头放入响应中,创建读取流并将值发送到响应中4)响应被发送到请求脚本中,该请求由回调函数5中的body参数表示)脚本现在在回调函数= console.log中执行响应。
form.html包含简单的htmp形式,但是为什么请求脚本的输出是
{ err: null,
res: { statusCode: 200 },
body:
{ url: '/form.html',
method: 'GET',
headers: { host: 'localhost:4001', connection: 'close' } } }
而不是(在正文中)包含form.html的文本代码?
我不确定我在交换机的form.html
分支中确切了解您要执行的操作,但是如果您只是尝试提供form.html
文件,则可以执行以下操作:
case '/form.html' :
res.writeHead(200,{'Content-Type': 'text/html'});
var ws = fs.createReadStream("form.html");
ws.pipe(res);
break;
这会将本地文件form.html
的内容提供给浏览器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.