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

使用Node.js内置的http模块创建简单的HTTP服务器,并根据请求的路径返回不同的文本响应。

创建一个简单的HTTP服务器,它只处理GET请求,并根据请求的路径返回不同的文本响应。对于非GET请求,服务器会返回“Method Not Allowed”的响应。

const http = require('http');  const server = http.createServer((request, response) => {  response.setHeader('Content-Type', 'text/html;charset=utf-8');  let { method, url } = request;  let pathname = new URL(url, 'http://127.0.0.1').pathname;  if (method === 'GET') {  if (pathname === '/login') {  response.end('登录页面'); } else if (pathname === '/reg') {  response.end('注册页面');  } else {  response.statusCode = 404;  response.end('Not Found');  }  } else {  response.statusCode = 405;  // 对于非GET请求,设置HTTP状态码为405(方法不允许)  response.end('Method Not Allowed');  }  
});  server.listen(9000, () => {  console.log('启动成功!');  
});

Node.js HTTP服务器代码中各段代码的详细解释:

const http = require('http');
  • 这行代码导入了Node.js内置的http模块。http模块提供了创建HTTP服务器的能力。
const server = http.createServer((request, response) => {
  • 这行代码使用http.createServer方法创建了一个新的HTTP服务器。这个方法接受一个回调函数作为参数,该回调函数有两个参数:requestresponserequest对象包含了客户端发来的请求信息,而response对象则用于向客户端发送响应。
response.setHeader('Content-Type', 'text/html;charset=utf-8');
  • 在响应发送给客户端之前,这行代码设置了响应的Content-Type头部,指定响应的内容类型为HTML,并指定了字符编码为UTF-8。这确保了客户端能够正确地解析和显示服务器发送的HTML内容。
let { method, url } = request;
  • 这行代码使用了ES6的解构赋值语法,从request对象中提取了methodurl属性。method属性包含了HTTP请求的方法(如GET、POST等),而url属性包含了请求的URL。
let pathname = new URL(url, 'http://127.0.0.1').pathname;
  • 这行代码创建了一个新的URL对象,该对象表示了请求的完整URL。由于url属性只包含了路径和查询字符串部分(没有协议和主机名),因此我们需要提供一个基础URL(在这个例子中是http://127.0.0.1)来构建完整的URL。然后,我们从这个完整的URL中提取了pathname属性,它表示请求的路径部分(不包括查询字符串)。
if (method === 'GET') {
  • 这行代码开始了一个条件语句,检查HTTP请求的方法是否为GET。GET方法通常用于请求服务器发送某个资源。
if (pathname === '/login') {
response.end('登录页面');
} else if (pathname === '/reg') {
response.end('注册页面');
} else {
response.statusCode = 404; // 设置HTTP状态码为404
response.end('Not Found');
}
  • 这部分代码根据请求的路径来决定发送什么响应。如果路径是/login,则发送“登录页面”的文本;如果路径是/reg,则发送“注册页面”的文本;如果路径不是这两个之一,则设置HTTP状态码为404(表示未找到资源),并发送“Not Found”的文本。
} else {
response.statusCode = 405; // 对于非GET请求,设置HTTP状态码为405(方法不允许)
response.end('Method Not Allowed');
}
  • 这部分代码处理非GET请求的情况。如果请求的方法不是GET,则设置HTTP状态码为405(表示方法不允许),并发送“Method Not Allowed”的文本。
});
  • 这行代码结束了http.createServer方法的回调函数定义。
server.listen(9000, () => {
console.log('启动成功!');
});
  • 这行代码让服务器监听9000端口上的连接。当服务器成功启动并开始监听端口时,会执行提供的回调函数,该函数简单地打印“启动成功!”到控制台。

http://www.mrgr.cn/news/61533.html

相关文章:

  • 《零基础Go语言算法实战》【题目 2-10】接口的实现
  • ElasticSearch | Elasticsearch与Kibana页面查询语句实践
  • 解决anaconda prompt找不到的情况
  • 2024AAAI SCTNet论文阅读笔记
  • HTB:Paper[WriteUP]
  • Word 转成pdf及打印的开源方案支持xp
  • LeetCode 3211.生成不含相邻零的二进制字符串:二进制枚举+位运算优化
  • 计算机毕业设计——ssm基于HTML5的互动游戏新闻网站的设计与实现录像演示2021
  • modelsim命令:add atv
  • 【Java数据结构】树】
  • 基于SSM积分商城管理系统的设计与实现(源码+lw+部署文档+讲解等)
  • 小红书图文无水印下载
  • 进一步认识ICMP协议
  • MySQL用户权限管理属于SQL语句中的DCL语句
  • 深入理解阻塞队列
  • 鸿蒙生态崛起:开发者的机遇与挑战
  • 数据结构————map,set详解
  • Rust实现Kafka - 前言
  • 18 Docker容器集群网络架构:一、etcd 概述
  • windows 驱动实例分析系列: NDIS 6.0的Filter 驱动改造(一)
  • Ubuntu下搭建自己的Docker镜像仓库
  • svg + canvas + 烟花 + 0.0
  • 记录一次更新idea
  • 记录工作上一次计算的优化
  • 基于JSP的篮球系列网上商城系统【附源码】
  • 图的最短路径算法-迪杰斯特拉(Dijkstra)算法与弗洛伊德(Frolyd)算法(更新中)