学会用node.js服务器写接口

服务器相关概念

服务器与客户端

服务器是提供网络服务的机器,通过安装特殊的软件(或者是运行某段特殊的代码)来提供服务。

学会用node.js服务器写接口_第1张图片

服务器  = 电脑 + 能给其它电脑/设备提供服务的软件

客户端与服务器:提供服务的是服务器,享受服务的是客户端

服务器的类型

根据服务不同,服务器的类型也不同:

  • web服务器。安装apache, tomcat, iis, 或者在nodejs环境写代码 来提供:图片浏览,新闻浏览....等服务的服务器。
  • ftp服务器。安装serv-U软件,为其它电脑提供文件下载,共享服务。
  • 数据库服务器。安装mysql软件,为其它电脑提供数据库服务。
    ....

web服务器:

  • 用户通过浏览器来享受web服务器提供的服务
  • 我们用url地址来访问某个web服务器上的资源
  • 浏览器端发起请求,web服务器收到请求后,响应这个请求,并将处理结果返回给浏览器

学会用node.js服务器写接口_第2张图片

  • 浏览器端与web服务器是通过http(或者是https)协议来进行请求和响应

ip地址

全称:Internet Protocol Address。

作用:标识一个网络设备(计算机、手机、电视)在某一个具体的网络当中的地址。要访问某个电脑上的资源,先要找到它的ip。

分类:ipV4   ipV6 (教育部办公厅关于贯彻落实《推进互联网协议第六版(IPv6)规模部署行动计划》的通知_部门政务_中国政府网)

格式:[0-255].[0-255].[0-255].[0-255] 即为四个 0-255 的数字组成(以ip4为例)。在同一个网络中,计算机的IP是不允许相同的,都是唯一的。

127.0.0.1 特指本机ip地址。

这个 百度一下,你就知道 会指向哪里?

域名

域名:ip地址的别名,由于ip地址不好记忆,我就给它们取个好记的别名。localhost这个域名特指127.0.0.1这个地址。

域名解析系统:把域名翻译成Ip地址的系统。

端口

一个IP地址的端口可以有65536个,范围是从[0,65535])。不同的端口被不同的软件占用,以提供不同的服务。

一台电脑可以通过安装多个服务器端软件来提供服务,比如Web服务、FTP服务、SMTP服务等。显然,仅仅通过ip地址是无法区分不同的服务的,这里就需要用到 “IP地址+端口号”来区分不同的服务

理解

如果理解IP地址(一台服务器)是一栋大商场,端口就是商场中的商铺的编号。

如果理解IP地址(一台服务器)是公司的前台电话,端口就是公司中各个部门的分机号。

学会用node.js服务器写接口_第3张图片

  1. 服务器要提供服务必须要通过指定的端口
  2. 服务器与客户端都需要通过端口要进行通信
  3. 端口是可以编程分配
  4. 有一些端口号是被预定了的。

  • http: 80
  • https:443
  • mysql:3306

通过netstat -a -n -o 查看端口使用情况

协议

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

http协议:

  • HTTP(HyperText Transfer Protocol) 超文本传输协议。
  • 协议双方: 浏览器与web服务器
  • 请求由浏览器发起的
  • HTTP 协议中明确规定了请求数据响应数据的格式(报文)
    • 浏览器 请求 资源 要遵守 http 协议:  请求报文(请求行,请求头,请求体)
    • 服务器 返回 资源 要遵守 http 协议:  响应报文(响应行,响应头,响应体)

学会用node.js服务器写接口_第4张图片

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

自己完成的网页,如果让其他人能够访问?

目标

用http模块写一个简单的服务器,让同学来访问本机的服务

要点

  • 引入nodejs中的核心模块:http
  • 使用createServer来创建服务
  • 使用listen方法来启动服务

操作

有三步:

  • 1. 手写代码,实现服务器功能
  • 2. 运行代码,启动服务
  • 3. 访问服务,测试功能

第一步:新建一个文件,名为  d:/src/01http.js( 文件名及路径名可以自行设置,建议均不使用中文字符), 内容如下

// 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中访问....');
});

第二步:运行js代码,启动服务。

在小黑窗中进入到01http.js所在的目录,键入命令 node 01http.js,此时会弹出一个小黑窗,不要关。

第三步:测试功能

打开一个浏览器页面,输入地址:http://localhost:8081,观察效果:

  • 浏览器中的效果
  • 小黑窗中的效果

停止服务:ctrl + c

拓展

共享让同学来访问

把localhost改成你自己电脑的ip地址,例如:http://192.xxx.xxx.xxx:8081,再把这个路径发你的同学(同一个局域网)来访问。

如果不能被其他同学访问,有可能你需要手动关闭你自己计算机的防火墙。

工作原理

使用http模块在本机上创建一个虚拟服务器,它来接收浏览器的请求,并给出响应。

学会用node.js服务器写接口_第5张图片

注意:

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

小结

  1. node中手写web服务器要使用 _______ 模块
  2. 基本的三步是 ______, ______, _______
  3. 如何停止服务?
  4. 修改服务器代码之后,是否要重新重启服务? 如何重启?

代码解析-理解请求和响应

代码解析

学会用node.js服务器写接口_第6张图片

  • 引入核心模块,得到的http是一个对象。
  • http.createServer方法创建一个http服务。参数是一个回调函数:当有http请求进来时,它会自动被调用。请求一次,它就被调用一次
    • 第一个参数:客户端的请求
    • 第二个参数:设置对本次请求的响应
      • res.end() :设置响应体,结束请求。
  • server.listen() 用来监听端口。
    • 格式:server.listen(端口号,[回调函数])。回调是可选的。
    • 说明:
      • 如果监听成功,则回调函数会执行一次。
      • 如果不成功(例如端口被占用),会报错。

理解请求和响应

请求

当web服务器就绪之后,如果没有客户端来访问它,它也是不会有任何效果的。也就是说回调函数不会执行。

而每一次的请求,都会导致回调函数要执行一次。

响应

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

====

你可能感兴趣的:(javascript,前端,vue.js)