Node.js学习十二(Node.js服务器开发、http协议及http模块)


一、Node.js服务器开发

      一个完整的网站应用程序主要由客户端服务器端两大部分组成。我们可以将服务器理解为一台计算机,主要负责存储数据和处理应用逻辑。
      用Node.js来代替传统的服务端语言(如Java、PHP语言等),开发服务端的网站应用。客户端和服务器端网站开发流程:
在这里插入图片描述

1、客户端与服务器

客户端:在网络节点中,负责消费资源的电脑。
服务器端:负责对外提供网络资源的电脑。

2、Node.js网站服务器

Node.js网站服务器满足的条件:
①网站服务器必须是一台计算机;
②计算机上需要安装Node.js运行环境;
③使用Node.js创建一个能够接收请求和响应请求的对象。

3、http协议

HTTP(Hyper Text Transfer Protocol)全称为超文本传输协议
①HTTP协议规定了如何从网站服务器传输超文本到本地浏览器;
②HTTP协议基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。
③HTTP协议可以使浏览器更加高效,使网络传输减少。
④HTTP协议不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
在这里插入图片描述

注意:在HTTP请求和响应的过程中传递的数据块就叫HTTP消息,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。
请求消息:是指客户端向服务器端发送请求时所携带的数据块。
响应消息:是指服务器端向客户端进行响应请求时所携带的数据块。

      如我们打开此网址http://nodejs.cn/api/http.html,然后打开浏览器的开发者工具中的网络,就能看到以下信息,它们就是遵循的http协议的内容。

(1)通用头消息(常规)

如下图:它一般包括以下信息
在这里插入图片描述

①Request Method

      请求的方法,规定客户端与服务器端联系的类型。主要是GETPOST两种。
      当用户在浏览器地址栏中直接输入某个URL地址或者单击网页上一个超链接时,浏览器将默认使用GET方式发送请求。
      如果将网页上的标签的method属性设置为post,那么就会以POST方式发送请求。
在这里插入图片描述

②Request URL

      请求的URL,对应浏览器地址栏,向服务器获取哪些内容。
在这里插入图片描述

③Status Code

      HTTP 响应代码,也叫状态码,指示特定 HTTP 请求是否已成功完成。在响应消息中,对于客户端的每一次请求,服务器端都要给予响应,在响应的时候我们可以通过状态码告诉客户端此次请求是成功还是失败。
在这里插入图片描述
      状态代码由3位数字组成,表示请求是否被理解或被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体的分类,第1位数字有5种可能的取值。

1**:请求已接收,需要继续处理。
2**:请求已成功被服务器接收、理解并接受。
3**:响应的重定向,跳转到另一个URL,为完成请求,客户端需进一步细化请求。
4**:客户端的请求有错误。
5**:服务器端出现错误。

      如:200 OK:请求成功;304 Not Modified:304 未改变,说明无需再次传输请求的内容,也就是说可以使用缓存的内容。如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。

HTTP协议常见的状态码

状态码 说明
200 表示服务器成功处理了客户端的请求
302 表示请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求
404 表示服务器找不到请求的资源
400 表示客户端请求有语法错误
500 表示服务器发生错误,无法处理客户端的请求
④Remote Address

      请求的服务器的IP地址及端口号。
在这里插入图片描述

(2)响应头信息

      如下图:它一般包括以下信息
在这里插入图片描述

①Connection

连接方式,keep-alive(持久连接)。

②Content-Encoding

内容压缩形式。

③Content-Type:响应的文件类型,一般有:

text/plain:返回纯文本格式。
text/html:返回HTML格式。
text/css:返回CSS格式。
application/javascript:返回JavaScript格式。
image/jpeg:返回JPEG图片格式。
application/json:返回JSON代码格式。

④Location

跳转的URL,常配合着状态码3**使用。

(3)请求头信息

      请求头是请求消息的一部分,它由客户端浏览器自动发送给服务器,服务器通过请求头可以获取本次请求的相关信息,如浏览器类型。
      如下图:它一般包括以下信息:
在这里插入图片描述
      请求头的格式为键值对,键和值用英文冒号“:”分隔,这些键值对又称为属性
      典型的请求头属性如下:

User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的响应内容类型列表。星号 “ * ”用于按范围将类型分组,用“/”指示可接收全部类型,用“type/*”指示可接收type 类型的所有子类型。
Accept-Language:客户端可接收的自然语言。
Accept-Encoding:客户端可接收的编码压缩格式。
Accept-Charset:可接收的应答的字符集。
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机。
connection:连接方式(close 或keepalive)。
Cookie:存储于客户端扩展字段,向同一域名的服务器端发送属于该域的cookie。

(4)请求主体

      可有可无,用于浏览器向服务器发请求传递的数据。

二、服务器相关概念

1、IP地址

(1)IP地址特点

      IP地址是互联网中设备的唯一标识,代表互联网协议地址。是IP协议提供的一种统一的地址格式,在计算机中,地址是由一串数字组成。
      它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。是互联网上每台计算机的唯一地址,一次IP地址具有唯一性,如果把个人电脑比作一台电话,那么IP地址就相当于电话号码,只要知道对方IP地址的前提下,才能与对应的电脑直接进行数据通信。

(2)IP地址发展

      首先出现的IP地址是IPV4,现有的互联网是在IPv4协议的基础上运行的,IP地址是32位的二进制数的格式,通常被分割为4个“8位二进制数”(也就是4个字节)。通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a.b.c.d都是0~255之间的十进制整数,例如,用点分十进制表示的IP地址(123.126.1.1)。

      由于互联网的蓬勃发展,IP位址的需求量愈来愈大,IPv6协议被提出,它是下一版本的互联网协议,它采用128位地址长度,几乎可以不受限制地提供地址。IPv6除了更大的寻址空间外,还提供了其他技术优势。特别是,它允许分层地址分配方法,以促进互联网上的路由聚合,从而限制路由表的扩展。扩大和简化了多播寻址的使用,并为服务的提供提供了额外的优化。关于IPv6的更多知识大家可以打开此网址查看:https://baike.baidu.com/item/IPv6

注意:
      ①互联网中每台Web服务器,都有自己的IP地址,例如:可以在Windows终端中运行ping www.baidu.com命令,即可查看到百度服务器的IP地址。
在这里插入图片描述
      可以看到百度服务器的IP地址为36.152.44.95,我们也可以直接在浏览器中搜索它,这样也能直接打开百度首页。
在这里插入图片描述
      ②在开发期间,自己的电脑就是一台服务器,也是一个客户端,为了方便测试,可以在自己的浏览器中输入127.0.0.1这个IP地址,就能把自己的电脑当做一台服务器进行访问了。

2、域名和域名服务器

      尽管IP地址能够唯一地标记网络上的计算机,但IP地址是一长串数字,不直观,而且不便于记忆,于是人民又发明了另一套字符型的地址方案,即域名(Domain Name)地址
      域名:平时上网所使用的网址。IP地址与域名是对应的关系,在浏览器的地址栏中输入域名,会有专门的服务器将域名解析为对应的IP地址,从而找到对应的服务器。
      IP地址和域名是一一对应的关系,这份对应关系存放在一种叫做域名服务器(DNS,Domain name server)的电脑中,使用者只需通过好记的域名访问对应的服务器即可,对应的转换工作由域名服务器实现。因此,域名服务器就是提供IP地址和域名直接相互转换服务的服务器。

注意:
      ①单纯使用IP地址,互联网中的电脑也能正常工作,但是有了域名的加持,能让互联网的世界变得更加方便。
      ②在开发测试期间,127.0.0.1对应的域名是localhost,它们都代表我们自己的这台电脑,在使用效果上没有区别。

3、端口号

      在一台电脑中,可以运行成百上千个web服务,每个web服务都对应一个唯一的端口号,客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的web服务进行处理。
      Node.js开发者习惯使用3000作为Node.js服务器的端口,一般来说,不使用0到1024之间的数字,因为这是操作系统软件,以及常用软件占用的端口。

注意:
      ①每个端口号不能同时被多个web服务占用
      ②实际应用中,URL中的80端口可以省略。

4、URL

      URL又叫统一资源定位符,它是专为标识Internet网上资源位置而设的一种编址方式。

三、http模块

      http模块是Node.js官方提供的,用来创建Web服务器的模块,通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,变成一台Web服务器,从而对外提供Web资源服务。

1、导入http模块

const http = require('http');

2、http模块的作用

      服务器和普通电脑的区别在于,服务器上安装了web服务器软件,例如:IIS、Apache等。通过安装这些服务器软件,就能把一台普通电脑变成一台web服务器。
      在Node.js中,我们不需要使用IIS、Apache等这些第三方web服务器软件,我们可以基于Node.js提供的http模块,通过代码,手写出一个服务器软件,从而对外提供web服务。
      http模块的主要功能是

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值