美文网首页Web
Node.js的学习总结http(四)

Node.js的学习总结http(四)

作者: 追逐_chase | 来源:发表于2019-12-18 08:52 被阅读0次
node.jpeg

http模块

  • 可以通过 Nodejs提供的http模块,我们可以快速的构建一个web服务器,
  • 需要手动引入这个模块
  • 通过HTTP模块实现服务器功能步骤
    • 1.导入HTTP模块
    • 2.创建服务器实例对象
    • 3.绑定请求事件
    • 4.监听指定端口请求
let http = require("http");
//2.创建服务器对象
let  server = http.createServer();
//3.注册监听事件
server.on("request",function (req, res) {

    // writeHead方法的作用: 告诉浏览器返回的数据是什么类型的, 返回的数据需要用什么字符集来解析
    res.writeHead(200, {
        "Content-Type": "text/plain; charset=utf-8"
    });

    //end方法的作用是: 结束本次请求并且返回数据
    res.end("www.ezcarry.com,哈哈哈");

    
});

//4.监听端口
server.listen(3000);

只要本地的 web服务对应的端口是3000就监听到

http模块中的路由(路径分发)

  • 路径分发也称之为路由, 就是根据不同的请求路径返回不同的数据
  • 通过请求监听方法中的request对象, 可以获取到当前请求的路径,根据不同的请求路径返回不同的数据
    • request的本质是http.IncomingMessage类的实例,req.url
    • response对象其实是http.ServerResponse 类的实例,
//1.导入模块
let http = require("http");
//2.创建服务器对象
let  server = http.createServer();
//3.注册监听事件
/*
request的本质是http.IncomingMessage类的实例
response对象其实是http.ServerResponse 类的实例
 */

server.on("request",function (req, res) {

    console.log(req.url);
    // writeHead方法的作用: 告诉浏览器返回的数据是什么类型的, 返回的数据需要用什么字符集来解析
    res.writeHead(200, {
        "Content-Type": "text/plain; charset=utf-8"
    });
    
    // startsWith 方法检测 字符串是否 包含 子串
    if (req.url.startsWith("/index")){
        //end方法的作用是: 结束本次请求并且返回数据
        //注意点:end方法来返回数据,那么只会返回一次
        // res.end("www.ezcarry.com,首页");

        //通过write方法 返回数据, 不会结束本次请求,必须要收到结束请求
        res.write("首页1111");
        res.end();
    }else if (req.url.startsWith("/login")) {
        res.end("登陆测试");
    }else {
        res.end("没有数据---");
    }




});

//4.监听端口
server.listen(3000);


http模块加载静态资源

  • 在加载图片的资源是不能写utf8,不能的资源类型时对应不同的相应头
  • 如果服务器在响应数据的时候没有指定响应头, 那么在有的浏览器上, 响应的数据有可能无法显示
image.png


let http = require("http");
let fs = require("fs");
let path = require("path");

//加载js,json出来的都是 js的实例对象
let mine = require("./mime");

//创建服务器对象
let server = http.createServer();

//监听相应请求
server.on("request",function (req,res) {
 //拼接文件路径
    let filePath = path.join(__dirname,"www",req.url);
    /*
       注意点:
       1.加载其它的资源不能写utf8
       2.如果服务器在响应数据的时候没有指定响应头, 那么在有的浏览器上, 响应的数据有可能无法显示
   * */
    let extname = path.extname(filePath);

    //判断有没有加载文件资源
    if (extname === ""){
        res.end("server error");

        return;
    }

    let type =  mine[extname];

    console.log(type);

    if (type.startsWith("text")){
        type += "; charset=utf-8;";
    }


    //设置相应头
    res.writeHead(200,{
        "Content-Type": type
    });
    
    //读取文件
    fs.readFile(filePath,function (err,data) {
        if (err){
            res.end("server error");
        }
        res.end(data);
    })
 
});


server.listen(3000);

image.png

需要注意的是: 代码是 mine是一个文件 里面存放是json对象,对应了 不同格式的资源 对应的 不同的相应头的名称,比如: ".html": "text/html",,".jpg": "image/jpeg",

image.png

URL模块

  • 需要收到导入

// 80是端口
//#banner 是哈希值
let urlStr = "http://root:123456@www.ezcarry.com:80/index.html?name=TT&age=68#banner";

//url转化为对象
//参数二; query转化为对象
let obj = url.parse(urlStr,true);

console.log(obj);
console.log(obj.query.name);

image.png
post请求的参数处理

/*

1.如何拿到POST请求传递过来的参数
使用querystring模块

querystring.parse(str[, sep[, eq[, options]]])  将参数转换为对象
querystring.stringify(obj[, sep[, eq[, options]]]) 将对象转换为参数

 */

//导入模块

let http = require("http");

//这个模块用于 解析和格式化 URL 查询字符串的实用工具
let querystring = require('querystring');

let server = http.createServer();

server.on("request",function (req,res) {
    //1.定义变量保存传递过来的参数
    let params = "";
    //注意点:在node.js中,post请求的参数我们不能一次性拿到,必须分批获取
    //开始获取参数
    req.on("data",function (el) {

        params += el;
    });

    //结束
    req.on("end",function () {

        console.log(params);

        //解析url字符串
        let obj = querystring.parse(params);
        console.log(obj);
    });

    res.end("提交成功");


    
});


server.listen(3000);

相关文章

  • Node.js的学习总结http(四)

    http模块 可以通过 Nodejs提供的http模块,我们可以快速的构建一个web服务器, 需要手动引入这个模块...

  • Node.js的安装与使用教程

    一、Node.js的学习地址: Node.js的中文官网:http://nodejs.cn/[http://nod...

  • node.js总结

    总结一: [node.js总结](http://www.cnblogs.com/Darren_code/archi...

  • 兄弟会8.9号笔记

    node.js模块学习 http 模块 fs 模块 url 模块 http 模块 HTTP http.STA...

  • javaweb学习总结(四)Http协议

    一、什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,...

  • 构建node.js应用模块

    在这里,开始Node.js的学习,通过构建一个基础的HTTP服务器,来进入学习。 node.js简介 Node.j...

  • Node.js HTTP模块

    内置HTTP模块 Node.js 中有 HTTP 这个内置模块,HTTP 模块允许 Node.js 通过超文本传输...

  • HTTP学习总结

    HTTP优化 现在网络建设使带宽极大的提升,影响HTTP性能主要是延迟。 浏览器阻塞(HOL blocking):...

  • http学习总结

    简介 一直想总结一下自己之前做的一个接口自动化测试的一个项目,想了一下直接来写的话有点大,就先从http开始吧。 ...

  • node.js学习笔记-http

    Node.js 提供了 http 模块,其中分装了一个高效的 HTTP 服务器和一个简易的客户端: 作为服务端使用...

网友评论

    本文标题:Node.js的学习总结http(四)

    本文链接:https://www.haomeiwen.com/subject/xmjdnctx.html