IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> http模块 -> 正文阅读

[网络协议]http模块

1.?Web服务器

当应用程序(客户端)需要某一个资源时,可以向一个台服务器,通过Http请求获取到这个资源;提供资源 的这个服务器,就是一个Web服务器;

目前有很多开源的Web服务器:Nginx、Apache(静态)、Apache Tomcat(静态、动态)、Node.js。

2.创建服务器

创建服务器对象,我们是通过 createServer 来完成的

  • http.createServer会返回服务器的对象;
  • 底层其实使用直接 new Server 对象。
function createServer(opts, requestListener) {

    return new Server(opts, requestListener)
}
  • 上面我们已经看到,创建Server时会 传入一个回调函数,这个回调函数在 被调用时会传入两个参数:
  • req:request请求对象,包含请求相 关的信息;
  • res:response响应对象,包含我们 要发送给客户端的信息;
const http = require('http')

// 创建web服务器
const server = http.createServer((req, res) => {
  res.end('create Server')
})

// 启动服务器,指定端口号和主机
server.listen(8888, '0.0.0.0', () => {
  console.log('服务器启动成功')
})

3.?监听主机和端口号

Server通过listen方法来开启服务器,并且在某一个主机和端口上监听网络请求:

  • 也就是当我们通过 ip:port的方式发送到我们监听的Web服务器上时;
  • 我们就可以对其进行相关的处理;
  • const http = require('http')
    
    // 1. 创建web服务器
    const server1 = http.createServer((req, res) => {
      res.end('create Server1')
    })
    
    // 启动服务器,指定端口号和主机
    server1.listen(8000, '0.0.0.0', () => {
      console.log('服务器启动成功')
    })

4.?request对象

在向服务器发送请求时,我们会携带很多信息,比如:

  • 本次请求的URL,服务器需要根据不同的URL进行不同的处理;
  • 本次请求的请求方式,比如GET、POST请求传入的参数和处理的方式是不同的;
  • 本次请求的headers中也会携带一些信息,比如客户端信息、接受数据的格式、支持的编码格式等;
  • Node会帮助我们封装到一个request的对象中,我们可以直接来处理这个request对象
const http = require('http')

// 1. 创建web服务器
const server1 = http.createServer((req, res) => {

  res.writeHead(200, {
    "Content-Type": "text/html;charset=utf8"
  })

  if(req.url === '/login') {
    res.end("欢迎回来~")
  } else if(req.url === '/users') {
    res.end('用户列表~')
  } else {
    res.end('错误请求, 检查~')
  }

  // const {pathname, query} = url.parse(req.url)
  // if(pathname == '/login') {
  //   console.log(query)
  //   res.end("请求结果~")
  // }
})

// 启动服务器,指定端口号和主机
server1.listen(8000, '0.0.0.0', () => {
  console.log('服务器启动成功')
})

5.?URL的处理

客户端在发送请求时,会请求不同的数据,那么会传入不同的请求地址:

  • 比如 http://localhost:8000/login;
  • 比如 http://localhost:8000/products;

服务器端需要根据不同的请求地址,作出不同的响应:

使用内置模块url:

const parseInfo = url.parse(req.url)

6.?method的处理

在Restful规范(设计风格)中,我们对于数据的增删改查应该通过不同的请求方式:

  • GET:查询数据;
  • POST:新建数据;
  • PATCH:更新数据;
  • DELETE:删除数据;

7.?返回响应结果

给客户端响应的结果数据,可以通过两种方式:

  • Write方法:这种方式是直接写出数据,但是并没有关闭流;
  • end方法:这种方式是写出最后的数据,并且写出后会关闭流;

没有调用 end和close,客户端将会一直等待结果:

  • 所以客户端在发送网络请求时,都会设置超时时间

7.1 返回状态码

Http状态码(Http Status Code)是用来表示Http响应状态的数字代码:Http状态码非常多,可以根据不同的情况,给客户端返回不同的状态码;

?

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:55:47  更:2022-11-05 00:57:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 15:23:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码