对服务器节点的请求.js

request to server node.js

本文关键字:请求 js 节点 服务器      更新时间:2023-09-26

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

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.url确定该怎么做,这里我们在/form上发出请求.html3)服务器脚本将做/form/html case =将标头放入响应中,创建读取流并将值发送到响应中4)响应被发送到请求脚本中,在回调函数中由body参数表示5)脚本现在在回调函数=控制台中做adction.log响应。

form.html包含简单的htmp表单,但为什么请求脚本的输出是

{ err: null,
  res: { statusCode: 200 },
  body:
   { url: '/form.html',
     method: 'GET',
     headers: { host: 'localhost:4001', connection: 'close' } } }

而不是(在正文中)包含表单的文本代码.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