node.js 学习入门(04 - http 模块创建基本的web服务器)

简介: node.js 学习入门(04 - http 模块创建基本的web服务器)

什么是 web 服务器?

当应用程序(客户端)需要某一个资源时,可以向一个台服务器,通过Http请求获取到这个资源;提供资源的这个服务器,就是一个Web服务器;

目前有很多开源的Web服务器:Nginx、Apache(静态)、Apache Tomcat(静态、动态)、Node.js

使用 http 创建基本的web服务器

可以在终端中使用 node 地址 来运行

// 1. 导入 http 模块
const http = require('http')
// 2. 创建 web 服务器实例
const server = http.createServer()
// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
    console.log("Someone visit our web serve.")
})
// 4. 启动服务器
server.listen(80, function () {
    // 80 可以省略,其他的不可以
    console.log("server running ar http://127.0.1:80")
})

了解req请求对象

const http = require('http')
const server = http.createServer()
// req 是请求对象,保护了与客户端相关的数据和属性
server.on('request', (req,res) => {
    // req.url 是客户端请求的 URL 地址
    const url = req.url
    // req.method 是客户端请求的 method 类型(get/post)
    const method = req.method
    const str = `Your request url is ${url}, and request method is ${method}`
    // console.log(str)
    // 调用 res.end() 方法,向客户端响应一些内容
    res.end(str)
})
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

解决中文乱码的问题

const http = require('http')
const server = http.createServer()
server.on('request', (req,res) => {
    // req.url 是客户端请求的 URL 地址
    const url = req.url
    // req.method 是客户端请求的 method 类型(get/post)
    const method = req.method
    // 定义一个字符串,包含中文的内容
    const str = `你请求的 url 地址是 ${url},请求的 method 类型是 ${method}`
    // 为了解决中文显示乱码的问题,需要设置响应头 Content-Type 的值为 text/html; charset=utf-8
    res.setHeader('Content-Type','text/html; charset=utf-8')
    // console.log(str)
    // 调用 res.end() 方法,向客户端响应一些内容
    res.end(str)
})
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

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

const http = require('http')
const server = http.createServer()
server.on('request',(req, res) => {
    // 1. 获取请求的 url 地址
    const url = req.url
    // 2. 设置默认的响应内容为 404 Not found
    let content = '<h1>404 Not found</h1>'
    // 3. 判断用户请求的是否为 / 或 /index.html 首页
    // 4. 判断用户请求的是否为 /about.html 关于页面
    if (url === '/' || url === '/index.html') {
        content = '<h1>首页</h1>'
    } else if(url === '/about.html'){
        content = '<h1>关于页面</h1>'
    }
    // 5. 设置 Content-Type 响应头,防止中文乱码
    res.setHeader('Content-Type','text/html; charset=utf-8')
    // 6. 使用 res.end() 把内容响应给客户端
    res.end(content)
})
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

web服务器案例

自己找一个 html 文件放在 clock 文件夹下,在 5.2 步骤处引入

// 1.1 导入 http 模块
const http = require('http')
// 1.2 导入 fs 模块
const fs = require('fs')
// 1.3 导入 path 模块
const path = require('path')
// 2.1 创建 web 服务器
const server = http.createServer()
// 2.2 监听 web 服务器的 request 事件
server.on('request', (req,res) => {
    // 3.1 获取到客户端请求的 url 地址
    const url = req.url
    // 3.2 把请求的 url 地址映射为具体文件的存放路径
    // const fpath = path.join(__dirname,url)
    // 5.1 预定义一个空白的文件存放路径
    let fpath = ''
    if (url === '/') {
        // 5.2 如果请求的路径为 /,则手动指定文件的存放路径
        // 自己找一个 html 文件放在 clock 文件夹下
        fpath = path.join(__dirname,'./clock/index.html')
    } else {
        // 5.3 如果请求的路径不为 /,则动态拼接文件的存放路径
        fpath = path.join(__dirname,'/wsh',url)
    }
    // 4.1 根据”映射“过滤的文件路径读取文件的内容
    fs.readFile(fpath, "utf8", (err,data) => {
        // 4.2 读取失败,向客户端响应固定的“错误信息”
        if (err) return res.end("404 Not found.")
        // 4.3 设置 Content-Type 响应头,防止中文乱码
        // res.setHeader('Content-Type','text/html; charset=utf-8')
        // 4.4 读取成功,将读取成功的内容,响应给客户端
        res.end(data)
    })
})
// 2.3 启动服务器
server.listen(80, () => {
    console.log("server running at http://127.0.0.1")
})

以上就是 node.js 中 使用 http 创建基本 web 服务器的功能,不懂得也可以在评论区里问我,以后会持续发布一些新的功能,敬请关注。

相关文章
|
1月前
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
104 62
|
2月前
|
缓存 安全 应用服务中间件
Web安全-HTTP Host头攻击
Web安全-HTTP Host头攻击
137 7
|
2月前
|
前端开发 JavaScript
node反向代理,解决跨域(http-proxy-middleware)
使用node.js和http-proxy-middleware库实现反向代理,解决跨域问题,允许前端请求通过代理访问不同端口的服务。
106 3
|
2月前
|
缓存 安全 应用服务中间件
Web安全-HTTP Host头攻击
Web安全-HTTP Host头攻击
163 3
|
1月前
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
30 0
|
1月前
|
JavaScript 前端开发 应用服务中间件
Node.js Web 模块
Node.js Web 模块
|
1月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
17 0
|
1月前
|
小程序 测试技术 iOS开发
Python和Web--模块cgi的简单用例
Python和Web--模块cgi的简单用例
|
Web App开发 安全 应用服务中间件

热门文章

最新文章