node.js服务器

本文深入探讨了Node.js创建服务器的过程,从IP地址、域名、协议的基础知识到HTTP协议的工作原理,包括请求和响应的格式。通过示例介绍了如何使用Node.js的http模块创建服务器,强调了服务器启动和监听端口的注意事项。还提到了Express框架在构建Web服务器中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章可能会有些枯燥乏味但是文章结节讲的全是干货

怎么解释服务器

  • 服务器是提供网络服务的机器,通过安装特殊的软件(或者是运行某段特殊的代码)来提供服务。
  • 服务器=电脑+能给其他电脑/设备提供的软件
  • 客户端与服务器:提供服务的是服务器 享受服务的是客户端

服务器类型

  • 服务不同 服务器的类型不同
  • web服务器。安装apache, tomcat, iis, 或者在nodejs环境写代码 来提供:图片浏览,新闻浏览…等服务的服务器。
  • ftp服务器。安装serv-U软件,为其它电脑提供文件下载,共享服务。
  • 数据库服务器。安装mysql软件,为其它电脑提供数据库服务
  • 浏览器端与web服务器是通过http(或者是https)协议来进行请求和响应

image.png

ip地址
  • 全称:Internet Protocol Address
  • 作用:标识一个网络设备(计算机、手机、电视)在某一个具体的网络当中的地址。要访问某个电脑上的资源,先要找到它的ip
域名
  • 一个IP地址的端口可以有65536个,范围是从[0,65535])。不同的端口被不同的软件占用,以提供不同的服务
  • 一台电脑可以通过安装多个服务器端软件来提供服务,比如Web服务、FTP服务、SMTP服务等。显然,仅仅通过ip地址是无法区分不同的服务的
  1. 服务器要提供服务必须要通过指定的端口
  2. 服务器与客户端都需要通过端口要进行通信
  3. 端口是可以编程分配
  4. 有一些端口号是被预定了的

image.png

协议
  • 制定客户端与服务器之间的通讯规则。不同的协议的作用也不同。

  • HTTP(HyperText Transfer Protocol) 超文本传输协议。

  • 协议双方: 浏览器与web服务器

  • 请求由浏览器发起的

  • HTTP 协议中明确规定了请求数据响应数据的格式(报文)

  • 浏览器 请求 资源 要遵守 http 协议: 请求报文(请求行,请求头,请求体)

  • 服务器 返回 资源 要遵守 http 协议: 响应报文(响应行,响应头,响应体)

image.png

用http模块写一个简单的服务器

步骤

  1. 首先引入http模块
  2. 创建一个服务器
  3. 启动服务器
// 1. 引入http模块
const http = require('http');

// 2. 创建服务
const server = http.createServer(function(req, res) {
  console.log('有人来访问了')
  // 向客户端发送内容,并结束本次响应
  res.end('hello world');
});
// 3. 启动服务
server.listen(8081, function() {
  console.log('服务器启动成功,请在http://localhost:8081中访问....');
}); 

注意点:

  • 小黑窗不要关,它就是服务器
  • 服务器本身不会有主动行为(小黑窗看起来没有任何变化),它在时刻等待客户端的访问
  • 不要用鼠标选中小黑窗的内容,会导致程序假死
  • 修改代码后要重启
  • 更改res.end()的内容,重启后,再次观察。
  • 重启服务:就是重新运行程序(按下向上的箭头,再回车)

如何理解响应和请求

请求

当web服务器就绪之后,如果没有客户端来访问它,它也是不会有任何效果的。也就是说回调函数不会执行。 而每一次的请求,都会导致回调函数要执行一次。

响应

通过res.end来设置响应的内容,res.end()的格式只是能是buffer或者是String

image.png

  • 引入核心模块,得到的http是一个对象。

  • http.createServer方法创建一个http服务。参数是一个回调函数:当有http请求进来时,它会自动被调用。请求一次,它就被调用一次

  • 第一个参数:`客户端的请求`。
    第二个参数:`设置对本次请求的响应`。 
    
  • **res.end()** :设置响应体,结束请求。 
    
  • server.listen() 用来监听端口。

  • 格式:server.listen(端口号,[回调函数]) 。回调是可选的。

  • 说明:

  • 如果监听成功,则回调函数会执行一次。

  • 如果不成功(例如端口被占用),会报错

content type作用

  • content-type用来告诉对方本次传输的数据的类型是什么
  • 在请求头中设置content-type来告诉服务器,本次请求携带的数据是什么类型的
  • 在响应头中设置content-type来告诉服务器,本次返回的数据是什么类型的

image.png

html:`res.setHeader('content-type', 'text/html;charset=utf8')`
css:`res.setHeader('content-type', 'text/css;charset=utf8')`
js:`res.setHeader('content-type', 'application/javascript')`
png:`res.setHeader('content-type', 'image/png')`
json数据:`res.setHeader('content-type', 'application/json;charset=utf-8')` 

格式

res.setHeader('content-type', 值)

设置statusCode

作用:设置http协议请求状态码

res.statusCode = 301;
// res.setHeader('location','http://www.qq.com')
res.statusCode = 404
res.statusCode = 500
res.end() 

重点 express

  • expresss 是一个第三方模块(在npm上可以下载),在使用它之前要先去下载它,在下载包之前要先创建项目,并通过npm init 创建package.json文件
  • 创建一个全新的文件夹,假设名字为 learn-express(目录名不要有汉字,也不要某个包的名字),在此目录下运行npm init -y 命令来生成package.json文件
// 0. 加载 Express
const express = require('express')

// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const app = express()

// 2. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
  res.send('hello world')
})

// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!')) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值