Nodejs中web 服务器创建和使用

Nodejs中http 模块介绍以及服务器相关的概念

https://blog.csdn.net/qq_44741577/article/details/136443716?spm=1001.2014.3001.5501

一、创建 web 服务器的基本步骤

  • 导入http 模块
const http = require("http");
  • 创建web服务器实例
const serve = http.createServer();
  • 为服务器实例绑定request事件,监听客户端的请求
serve.on("request", (req, res) => {
  //只要有客户端来请求我们自己的服务器,就会触发 request 事件,从而调用这个事件处理函数
  console.log("Someone visit our web server");
});
  • 启动服务器

调用 server.listen(端口号,cb回调) 方法,即可启动web服务器

serve.listen(80, () => {
  console.log("http server running at http://127.0.0.1");
});
  • 完整代码
/* 导入http 模块 */
const http = require("http");
/* 创建 web 服务器实例 */
const serve = http.createServer();

/* 为服务器实例绑定 request 事件,监听客户端的请求 */
serve.on("request", (req, res) => {
  // 只要有人请求的了服务
  console.log("Someone visit our web server");
});
/* 调用 server.listen(端口号,cb回调) 方法,即可启动 web 服务器 */
serve.listen(80, () => {
  console.log("http server running at http://127.0.0.1");
});
  • node执行js文件
    image.png

  • 可以看到服务已经运行成功
    image.png

  • 浏览器访问127.0.0.1:80
    image.png

  • 可以看到访问已经被监听
    image.png

二、req 请求对象

用于访问与客户端相关的数据或属性

/* 为服务器实例绑定 request 事件,监听客户端的请求 */
serve.on("request", (req, res) => {
  // req 是请求对象,它包含了与客户端相关的数据和属性,例如:
  // req.ur1 是客户端请求的 URL 地址
  // req.method 是客户端的 method 请求类型
  const str = `Your request url is ${req.url}, and request method is ${req.method}`;
  console.log(str);
});
  • 浏览器访问127.0.0.1
    image.png

  • 浏览器访问127.0.0.1/index.html
    image.png

  • 利用postman测试post方式
    image.png
    image.png

三、res请求对象

3.1. res.end()方法

向客户端发送指定的内容,并结束这次请求的处理过程,每次修改代码记得重启一下服务

/* 为服务器实例绑定 request 事件,监听客户端的请求 */
serve.on("request", (req, res) => {
  // req 是请求对象,它包含了与客户端相关的数据和属性,例如:
  // req.ur1 是客户端请求的 URL 地址
  // req.method 是客户端的 method 请求类型
  const str = `Your request url is ${req.url}, and request method is ${req.method}`;
  // res.end()向客户端发送指定的内容,并结束这次请求的处理过程
  res.end(str);
});
  • postman测试
    image.png

3.2. 解决res.end()中文乱码问题

当调用 res.end()方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式
image.png

/* 为服务器实例绑定 request 事件,监听客户端的请求 */
serve.on("request", (req, res) => {
  // req 是请求对象,它包含了与客户端相关的数据和属性,例如:
  // req.ur1 是客户端请求的 URL 地址
  // req.method 是客户端的 method 请求类型
  const str = `您的请求地址为 ${req.url}, 请求方法为 ${req.method}`;
  // 为了防止中文显示乱码的问题,需要设置响应头 Content-Type 的值为 text/html; charset=utf-8
  res.setHeader("Content-Type", "text/html; charset=utf-8");
  // 把包含中文的内容,响应给客户端
  // res.end()向客户端发送指定的内容,并结束这次请求的处理过程
  res.end(str);
});

image.png
image.png

四、练习:根据不同的url响应不同的 html内容

/* 为服务器实例绑定 request 事件,监听客户端的请求 */
serve.on("request", (req, res) => {
  const url = req.url; // 1.获取请求的 ur1 地址
  let content = "<h1>404 Not found!</h1>"; // 2.设置默认的内容为 404 Not found
  if (url === "/" || url === "/index.html") {
    content = "<h1>首页</h1>"; // 3,用户请求的是首页
  } else if (url === "/about.html") {
    content = "<h1>关于页面</h1>";
  }
   // 5.设 (ontent-Type 响应头, 防上中文乱码
  res.setHeader("Content-Type", "text/html; charset=utf-8");
  res.end(content);
});

image.png
image.png
image.png

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值