Node.js HTTP核心模塊

HTTP協議javascript

包含請求報文,響應報文css

 

  • 使用以前的方式拼接響應報文
  • let msg = "<h1>hello world</h1>";
    //構造響應報文
    let responseText = "HTTP/1.1 200 OK\r\n";
    responseText += "Server: mynodeserver 1.0\r\n";
    responseText += "Content-Length:"+ msg.length +"\r\n";
    responseText += "Content-Type: text/html;charset=utf-8\r\n";
    responseText += "\r\n";
    responseText += msg;
    
    socket.write(responseText);
    socket.end();
  • 使用http模塊簡化web服務器的開發
"use strict";
const http = require("http");
let server = http.createServer((req,res)=>{

    //獲取請求頭      req.headers
    //獲取http的版本  req.httpVersion
    //請求的方法      req.method
    //請求的路徑      req.url
    console.log(req.headers);
    console.log(req.httpVersion);
    console.log(req.method);
    console.log(req.url);

    res.write("hhhhhh中文");
    res.end();
}).listen(8888,()=>{
    console.log("開始監聽...");
});
  • 請求對象的經常使用屬性html

    • req.headers 獲取請求頭
    • req.method 請求的方法
    • req.httpVersion 獲取http的版本
    • req.url 請求的路徑
  • 響應對象的經常使用方法java

    • res.end() 結束請求
    • res.write() 發送內容
    • res.setHeader("Content-Type","text/html;charset=utf-8");
  • 異常處理
請求會有不少不少,若是一個請求出錯會致使服務器掛掉,別的請求沒法訪問服務器.
因此再作服務器開發的時候要保證若是一個請求出錯,不影響其餘請求

如何處理異常:
try{

}catch(err){
    console.log("出錯了:" + err);
    //此處要寫日誌,讓程序員發現錯誤,進行修改
}

 

 

  • 實現本身的模板,改變頁面數據
  • const http = require("http");
    const fs= require("fs");
    const  path = require("path");
    
    let server = http.createServer((req,res)=>{
    
        if(req.url.trim() === "/" || req.url.includes("index.html")) {
            //讀取模板html文件
            fs.readFile("./template/tmp.html", (err, content)=>{
                let tmp = content.toString();
    
                let dataArr = require("./data.json");
    
                //變量數據,替換模板
                let array = [];
                for (var i = 0; i < dataArr.length; i++) {
                    let item = dataArr[i];
    
                    array.push("<li>"+item+"</li>");
                }
                tmp = tmp.replace("${list}",array.join(""));
    
                tmp = tmp.replace("${title}","列表");
                res.write(tmp);
                //結束請求
                res.end();
            });
        }else if(req.url.includes(".css")){
    
            //加載css
            fs.readFile(path.join("template",req.url) ,(err,content)=>{
                res.setHeader("Content-Type","text/css;charset=utf8");
                res.end(content);
            });
    
        }else if(req.url.includes(".jpg")) {
            //加載jpg的圖片
            fs.readFile(path.join("image",req.url) ,(err,content)=>{
                res.setHeader("Content-Type","image/jpeg");
                res.end(content);
            });
        }else{
            res.end("你鬧啥呢");
        }
    
    
    
    }).listen(8888,()=>{
        console.log("開啓監聽...");
    });
    
相關文章
相關標籤/搜索