Node.js学习第二天

Node.js学习第二天

1. http模块

  • 概念:用来创建web服务器的模块,提供http模块提供的http.createServer()方法,就能把一台普通的电脑,变成一台web服务器,从而对外提供web服务

1.1 http模块的使用

  • 需要导入该模块
const http=require('http')

1.2 http模块的作用

  • 手写一个服务器软件,从而对外提供web服务
服务器与普通电脑的区别
  • 服务器上安装了web服务器软件,如iis,apache,通过这些服务器软件,就能把一台普通的电脑变成一台服务器

1.3 服务器的相关概念

  • ip地址:每台计算机的唯一标识,互联网中的每一台web服务器,都有自己的ip地址

  • 域名和域名服务器

    • 域名地址:与ip地址一一对应,ip地址的别名,更方便记忆
    • 域名服务器:存放ip地址和域名地址的对应关系,完成ip地址与域名地址的转换
  • 端口号:计算机开启的服务对应的端口号,通过端口号来将网络请求交给指定的服务

在这里插入图片描述

2. 创建最基本的web服务器

2.1 创建步骤

  1. 导入http模块
  2. 创建web服务器实例
  3. 为服务器实例绑定request事件,监听客户端请求
  4. 启动服务器

2.2 导入http模块

const http=require('http')

2.3 创建web服务器实例

const server=http.createServer()

2.4 为服务器实例绑定request事件,监听客户端请求

server.on("request",function(req,res){
    console.log("someone is visiting our web server")
})

2.5 启动服务器

server.listen(80,function(){
    console.log("http server running at http://10.152.242.223")
})
  • 停止服务
快捷键:ctrl+c 停止

实例

// 导入http模块
const http = require('http');

// 创建一个服务器实例

const server = http.createServer();

// 服务器监听客户端的请求

server.on("request", function(req, res) {
    console.log("someone is visiting our web server");
})


// 启动服务器

server.listen(80, function() {
    console.log("http server running at http://10.152.242.223");
})
  • 效果图

在这里插入图片描述

2.6 req请求对象

  • 服务器接收到了客户端的请求,就会通过server.on()为服务器绑定的request事件处理函数

  • 访问有关客户端相关的数据和属性,可以使用如下的方式

  • req.url:客户端的请求地址

  • req.method:客户端的请求方式

实例
const http = require('http')
const server = http.createServer()
server.on("request", (req, res) => {

    // req为请求对象,包含有关客户端的信息
    // 客户端请求的url地址
    var url = req.url;
    // 客户端的请求方式

    var method = req.method;

    const str = `客户端的请求方式为${req.url},客户端的请求方式为${method}`;

    console.log(str);
})

server.listen(80, () => {
    console.log("http server running at http://10.152.242.223");
})
  • 效果图(使用了postman)

在这里插入图片描述

在这里插入图片描述

  • post请求效果图

在这里插入图片描述

在这里插入图片描述

2.7 res响应对象

  • 在服务器的request事件处理函数中,如果想访问与服务器相关的数据和属性,可以使用如下方式
示例
const http = require('http')

const server = http.createServer()

server.on("request", (req, res) => {
    // 有关客户端的字符串
    var str = `你请求的url地址为${req.url},请求方式为${req.method}`

    // 将该字符串作为响应消息发给客户端,并结束这次请求

    res.setHeader('Content-Type', 'text/html; charset=utf-8')

    res.end(str);
})

server.listen(80, () => {
    console.log("http server running at http://10.152.242.223");
})
  • 效果图

在这里插入图片描述

2.8 中文乱码问题

在这里插入图片描述

  • 手动设置内容的编码格式
res.setHeader('Content-Type', 'text/html; charset=utf-8')
const http = require('http')

const server = http.createServer()

server.on("request", (req, res) => {
    // 有关客户端的字符串
    var str = `你请求的url地址为${req.url},请求方式为${req.method}`

    // 将该字符串作为响应消息发给客户端,并结束这次请求

    res.setHeader('Content-Type', 'text/html; charset=utf-8')

    res.end(str);
})

server.listen(80, () => {
    console.log("http server running at http://10.152.242.223");
})

2.9 根据不同的url响应不同的html内容

在这里插入图片描述

示例
const http = require('http')

const server = http.createServer()

server.on("request", (req, res) => {
    // 根据不同的url响应不同的html页面

    var url = req.url;

    // 定义默认内容
    let content = "<h1>404 not found!</h1>"

    // 判读是否为首页
    if (url === "/" || url === "/index.html") {
        content = '<h1>首页</h1>'
    } else if (url === '/about.html') {
        content = '<h1>关于页面</h1>'
    }

    // 设置编码格式,防止中文乱码

    res.setHeader("Content-Type", "text/html; charset=utf-8");

    // 响应消息,结束本次请求

    res.end(content)

})

server.listen(80, () => {
    console.log("http server running at http://10.152.242.223");
})
  • 效果图

在这里插入图片描述

2.10 实现clock时钟的web服务器

在这里插入图片描述

在这里插入图片描述

// 导入http,fs,path

const fs = require('fs')
const http = require('http')
const path = require('path')

// 创建服务器实例

var server = http.createServer()
    // 监听服务器实例
server.on("request", (req, res) => {
    var url = req.url;

    // 进行路径拼接
    var pathStr = '';
    if (url === "/") {
        // 默认是首页地址
        pathStr = path.join(__dirname, "/clock/index.html");
    } else {
        // 请求css,js时拼接clock目录
        pathStr = path.join(__dirname, "/clock", url);
    }

    fs.readFile(pathStr, (err, datastr) => {
        if (err) {
            // 读取到不存在的文件
            return res.end("404 not found!")
        } else {
            // res.setHeader('Content-Type', 'text/html; charset=utf-8')
            res.end(datastr);
        }
    })

})

// 开启服务器

server.listen(80, () => {
    console.log("http server running at http://10.152.242.223");
})
  • 效果图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值