簡體   English   中英

請求到服務器node.js

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM