当前位置: 首页 > news >正文

利用node.js在本地搭建简易http服务器

一、代码

创建一个server.js文件,写入以下代码:

const http = require('http')
const server = http.createServer()
server.on('request', (req,res) => {//req.url客户端请求的url地址//req.method客户端请求的method类型/* const yoururl = req.urlconst yourmethod = req.methodconst str = `your url is ${yoururl},your request is ${yourmethod}`console.log(str); */console.log(req);const yoururl=req.urllet content='<h1>404 Not Found</h1>'if(yoururl==='/'||yoururl==='/index.html'){content='<h1>首页</h1>'}else if(yoururl==='/about.html'){content='<h1>关于页面</h1>'}res.setHeader('Content-Type','text/html;charset=utf-8')res.end(content)})
server.listen(80, () => {console.log('running on http://127.0.0.1')})

这就包含了搭建一个本地的简易服务器所需要的代码

二、详解

1.前置准备

//获取http模块
const http = require('http')
//利用http创建服务器对象
const server = http.createServer()

2.监听客户端

//绑定request事件,监听客户端请求
server.on('request',(req,res)=>{})
//req:请求对象
//res:响应对象
//调用server.listen(端口号,回调)
server.listener(80,()=>{
console.log(`http server running at http://127.0.0.1:80`)
})

3. 请求头与响应头设置

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

这行代码设置了响应头,其中:

  • Content-Type:告诉浏览器返回的内容类型
  • text/html:表示返回HTML文档
  • charset=utf-8:指定字符编码为UTF-8,该编码包含了完整中文编码

这里的响应头设置是为了防止输入的中文变为乱码

常见的Content-Type还有:

  • application/json:JSON数据
  • text/plain:纯文本
  • image/png:PNG图片

4. 端口号

server.listen(80, ...)

端口号就像是服务器的"门牌号":

  • 80:HTTP默认端口,访问时可不写
  • 443:HTTPS默认端口
  • 8080/3000:常用开发端口

如果80端口被占用,可以改用其他端口如8080,访问地址变为http://127.0.0.1:8080

5. 本地地址127.0.0.1

127.0.0.1是特殊的IPv4地址,称为:

  • 本地回环地址(Loopback Address)
  • 永远指向当前计算机
  • 等价于localhost

6. req请求对象

当收到请求时,我们可以通过req对象获取:

{url: '/about.html',       // 请求路径method: 'GET',            // 请求方法headers: {                // 请求头'user-agent': '...','accept': '...'},// 其他属性和方法...
}

若我们需要发送请求的地址,可以直接调用req.url
通过req的这些属性,我们可以根据不同的url响应不同的页面

7. res响应对象

用于向客户端返回数据:

res.statusCode = 200       // 设置状态码
res.setHeader(name, value) // 设置响应头
res.write(data)            // 写入响应体
res.end()                  // 结束响应

四、启动和使用服务器

  1. 保存代码为server.js
  2. 在终端运行:node server.js
  3. 浏览器访问:
    • http://localhost(首页)
    • http://localhost/about.html(关于页)

五、常见问题解决

  1. 端口占用错误

    • 解决方案:改用其他端口如8080
    • 修改代码:server.listen(8080)
    • 检查终端:可能已经在运行
  2. 中文乱码
    确保设置了正确的编码:

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

建立好简易服务器后,就可以根据自己需求修改代码了

http://www.dtcms.com/a/283639.html

相关文章:

  • QT跨平台应用程序开发框架(10)—— Qt窗口
  • 【C#】Vscode中C#工程如何引用自编写的dll
  • React hooks——useReducer
  • 端到端神经网络视频编解码器介绍
  • 神经网络常见激活函数 14-Mish函数
  • AI学习笔记三十二:YOLOv8-CPP-Inference测试(Linux版本)
  • CDSS系统升级“可视化解释-智能反馈-临床语言“三位一体设计架构设计分析
  • 「Chrome 开发环境快速屏蔽 CORS 跨域限制详细教程」*
  • lua(xlua)基础知识点记录二
  • Oracle数据泵详解——让数据迁移像“点外卖”一样简单​
  • 数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)
  • python与正则:前后向断言、分组,以及案例练习
  • Xss-labs 1-8关的初步通关
  • 【Linux系统】进程地址空间
  • 时序数据库选型指南 —— 为什么选择 Apache IoTDB?
  • Qt Quick 粒子系统详解
  • 数据呈现高阶技巧:散点图与桑基图的独特价值
  • 从零开始学 Linux 系统安全:基础防护与实战应用
  • 12.9 Mixtral-8x7B核心技术解密:如何用1/3参数实现4倍推理速度碾压LLaMA2?
  • 取消office word中的段落箭头标记
  • 多方案对比分析:后端数据加密策略及实践
  • 菜单权限管理
  • 【Linux】LVS(Linux virual server)
  • zabbix安装(docker-compose)
  • 若依框架开启注册功能全流程指南
  • I3C Host Adapter Pro+ (3)
  • 36.在列表或字典中查找匹配项
  • CrewAI与LangGraph:下一代智能体编排平台深度测评
  • 数据分析全流程指南:从明确目标到数据呈现的实操方法论
  • Kiro vs Cursor: AI IDE 终极对比指南