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("开启监听...");
    });
    
相关文章
相关标签/搜索