http模块 - 创建Web服务以及案例

复制代码
/**
 * 目标: 基于http模块创建Web服务程序
 *
 * 1.1 加载http模块, 创建Web服务对象
 * 1.2 监听request请求事件, 设置响应头和响应体
 * 1.3 配置端口号并启动Web服务
 * 1.4 浏览器请求: http://localhost:3000 测试
 *
 */

// 加载http模块, 创建web服务对象
const http = require('http');
const server = http.createServer()

// 监听request请求事件, 设置响应头和响应体
server.on('request', (req, res) => {
    // 设置响应头, 内容类型 - 普通文本以及中文编码格式
    res.setHeader('Content-Type', 'text/plain;charset=utf-8')

    // 设置响应体内容, 结束本次请求与响应
    res.end('欢迎使用Node.js 和http模块创建的Web服务')
})

// 配置端口号并启动Web服务
server.listen(4000, () => {
    console.log('启动成功');
})




// 案例 - 浏览压缩后的html页面
/**
 *
 * 目标: 基于Web服务, 开发提供网页资源的功能
 * 步骤:
 *  1. 基于http模块, 创建Web服务
 *  2. 使用req.url获取请求资源路径, 并读取index.html里字符串内容返回给请求方
 *  3. 其他路径, 暂时返回不存在提示
 *  4. 运行Web服务, 用浏览器发起请求
 *
 */
const fs = require('fs')
const path = require('path')
const http = require('http');
const server = http.createServer()
server.on('request', (req, res) => {
    if (req.url === '/index.html') {
        fs.readFile(path.join(__dirname, 'dist/index.html'), (err, data) => {
            if(err) console.error(err)
            else {
                res.setHeader('Content-Type', 'text/html;charset=utf-8');
                res.end(data.toString())
            }
        })
    } else {
        res.setHeader('Content-Type', 'text/html;charset=utf-8')
        res.end('你要访问的资源不存在')
    }
})

server.listen(3000, () => {
    console.log('3000端口请求成功');
})
相关推荐
fantasy_arch4 分钟前
SVT-AV1帧类型决策-场景切换检测
前端·网络·av1
LYFlied4 分钟前
前端工程化核心面试题与详解
前端·面试·工程化
小程故事多_8019 分钟前
用Agent与大模型实现Web项目全自动化生成:从需求到部署的完整落地方案
运维·前端·人工智能·自动化·aigc
千里马-horse22 分钟前
AsyncContext
开发语言·前端·javascript·c++·napi·asynccontext
勇往直前plus24 分钟前
Jackson 反序列化首字母大写字段映射失败的底层原因与解决方案
java·开发语言·前端
转转技术团队24 分钟前
基于微前端 qiankun 多实例保活的工程实践
前端·javascript·前端工程化
松涛和鸣24 分钟前
37、UDP网络编程入门
linux·服务器·前端·网络·udp·php
毕设十刻40 分钟前
基于Vue的新生入学报道管理系统(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
期待のcode40 分钟前
JWT令牌
前端·javascript·spring boot·安全
JZXStudio1 小时前
Swift 6 + MLX + SwiftUI:三位一体本地AI架构蓝图
前端·ios