Javascript 对server node.js的请求

Javascript 对server node.js的请求,javascript,node.js,request,Javascript,Node.js,Request,我正在学习节点中的请求。我已经创建了简单的服务器 var http=require("http"); var fs=require("fs"); http.createServer(function(req,res){ switch(req.url){ case '/redirect' : res.writeHead({"Location ":'/'}); res.end(); break;

我正在学习节点中的请求。我已经创建了简单的服务器

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) 请求脚本向服务器发出请求(默认get) 2) 服务器脚本将注意到请求,并通过request.url确定要做什么,这里我们在/form.html上发出请求 3) 服务器脚本将do/form/html case=将头放入响应中,创建读取流并将值发送到响应中 4) 响应被发送到请求脚本中,由回调函数中的body参数表示 5) 脚本现在在callback function=console.log中执行ADAction以记录响应

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
的内容提供给浏览器。

对不起,这是我在这里输入代码的错误,我正在执行的代码包含form.html,已编辑q@Johnyb-改写我的答案。