【Node.js基础03】利用http模块创建Web服务

一:使用步骤

1 加载http模块,并创建Web服务程序

2 利用Web服务程序监听request事件,设置响应头和响应体

3 配置端口号并启动Web服务

4 浏览器请求设置的端口号,进行Web服务程序测试

二:简单应用

javascript 复制代码
const http = require('http')
// 创建Web服务对象
const server = http.createServer()
// req中包含本次请求的一些参数
server.on('request', (req, res) => {
  // 设置响应头和响应体
  //设置响应头内容类型-普通文本以及中文编码格式
  res.setHeader('Content-Type', 'text/plain;charset=utf-8')
  // 设置响应体内容,结束本次请求与响应
  res.end('欢迎使用Node.js和http模块创建Web服务')
})
//设置端口号为3000,来区分不同的Web服务,服务启动成功后调用回调函数
server.listen(3000, () => {
  console.log('启动成功');
})

在node.js中调用后,会启动计算机进程,持续监听是否有该端口号的请求。倘若要关闭该进程,则利用Ctrl+C操作。停止后,则无法通过浏览器访问到(该例,http://localhost:3000

三:浏览时钟案例

基于Web服务,开发提供网页资源的功能

1 实现思路

  1. 基于http模块,创建Web服务
  2. 监听reques事件,使用req.url获取在浏览器地址栏中的请求的资源路径
  3. 判断并读取index.html里的字符串内容,并设置响应头和响应体
  4. 访问的其他路径不存在时,暂时返回不存在提示
  5. 运行Web服务,在浏览器中测试
javascript 复制代码
const http = require('http')
// const server = require('server')
const server = http.createServer()
const fs = require('fs')
const path = require('path')
server.on('request', (req, res) => {
  if (req.url === '/index.html') {
    console.log(__dirname);
    fs.readFile(path.join(__dirname, 'index.html'), (err, data) => {
      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(8080, () => {
  console.log('启动成功');
})
相关推荐
kyriewen10 小时前
面试官说"打开你的AI工具"——我才发现,他考的根本不是写代码
前端·人工智能·面试
IT_陈寒11 小时前
Vue的双向绑定把我坑惨了,原来这个场景不能用
前端·人工智能·后端
hunterandroid12 小时前
[Android 从零到一] Compose LazyColumn 性能优化:key、稳定性与重组治理
android·前端
烬羽12 小时前
从 nest new 到 Hello World:一个最小 NestJS 项目,讲透工厂 + 装饰器 + 模块化
设计模式·node.js·nestjs
lichenyang45312 小时前
从一次团队邀请开始:用 React、NestJS 与 Socket.IO 做可靠的实时通知
前端
vtian12 小时前
一篇文章吃透 Monorepo:pnpm + Turborepo + Changesets 全流程实战(含 8 个踩坑)
前端
默_笙12 小时前
❗ 点击计数按钮,为什么"峨眉队"也跟着重新渲染?React.memo 说:我记住了
前端·javascript
315356691313 小时前
DeepSeek Harness 发布后,我没急着跑 Demo,先把 `.agents/` 翻了一遍
前端·后端·github
名字还没想好☜13 小时前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
学习zhao极致it13 小时前
2020全新React教程全家桶实战redux+antd+React Hooks前端js视频
前端