当前位置: 首页 > news >正文

前后端、网关、协议方面补充

这里写目录标题

  • 前后端
    • 接口文档
      • 简介
      • 前后端视角
        • 对于前端
        • 对于后端
          • 代码
          • 注册路由
          • 路由处理函数
      • 关于http
        • GET/POST
        • 底层网络
        • 关于前端的获取
  • 路由器网关
    • 路由器的IP
      • 简介
      • 公网IP(WAN IP)
      • 私网IP(LAN IP)
      • 无线网络IP(WIFI IP)
      • 查询
        • 路由器私网IP
        • 路由器公网IP
    • LAN口与WIFI
      • 简介
      • 基本原理
    • 手动配置电脑IP时,默认网关
      • 由上述已经可知,默认网关即路由器的私网IP
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

前后端

接口文档

简介

接口文档,是对一个接口的功能、参数、返回值、调用凡是等进行详细描述的文档

例如:
在这里插入图片描述

前后端视角

对于前端

在这里插入图片描述
在这里插入图片描述
前端相当于接口的调用者
后端相应的接口会被开放在文档中规定的URL地址,该接口服务就监听在这里。
前端会去向接口文档中提供的URL发送请求,向指定的后端服务发送数据,拿到返回值(通常是JOSN类型的数据)

发送的数据包括:
GET:完整的URL(含请求方法、参数)
POST:大部分数据在请求体,同时也会讲URL发送到后端
发送URL一方面可以携带数据,一方面可以检查确认没有发错人

fetch(‘https://example.com/api/getUserInfo?userId=1’) 这部分向指定的接口 URL 发送了一个 GET 请求,并传递了参数 userId=1 。
然后通过 .then(response => response.json()) ,将服务器返回的响应转换为 JSON 格式的数据。如果转换成功,就会进入下一个 .then 回调,通过 data => console.log(data) 将数据打印到控制台。
如果在这个过程中任何一个环节出现错误,比如网络问题或者服务器返回了错误状态码,就会被 .catch 捕获,然后通过 console.error 打印出错误信息。

对于后端
代码

在这里插入图片描述
在上述代码中,handleGetRequest 函数用于处理 GET 请求,分析请求中的参数,并根据参数情况返回相应的响应。main 函数中创建 http_listener 对象来监听指定端口和路径的请求,并关联处理函数。

步骤解释:
1、使用http_listener对象,来进行一些操作,包括:
指定监听URL、注册路由(注册当URL收到请求,且请求为GET/POST时,进入到某个“路由处理函数”进行业务处理)

在路由处理函数中:
2、参数在URL中,所以要对URL进行分割,拿到参数

3、拼接好JOSN数据对象之后,直接使用relay方法发送给前端

4、这个是后端在监听对应的URL路径上收到的前端请求

注册路由

上述的listener.support()就是注册路由
注册路由主要有以下几个重要作用:
组织和管理请求:通过注册路由,可以将不同的请求 URL 和对应的处理逻辑清晰地关联起来,使后端服务能够有条不紊地处理各种类型的请求。
提高代码可读性和可维护性:将请求与处理函数明确对应,使得其他开发者在阅读和理解代码时更容易知道每个请求的处理流程。
分离关注点:让开发者能够专注于每个路由对应的具体业务逻辑,而不必担心请求的分发和匹配。
方便扩展和修改:当需要添加新的功能或修改现有功能时,只需在注册路由的部分进行相应的调整,而不会影响到其他不相关的部分。
增强安全性:可以对不同的路由进行访问权限的控制和设置,保障系统的安全性。

其他例子:
在这里插入图片描述
1、在上述代码中,通过 listener.support 方法注册了两个路由 /home 和 /about ,并分别关联了 handleHomeRequest 和 handleAboutRequest 两个处理函数。

2、在上述代码中,注册的路由及其对应的 URL 分别是:
handleHomeRequest 对应的 URL 是 http://localhost:3000/home
handleAboutRequest 对应的 URL 是 http://localhost:3000/about

3、在实际开发中,只要前后端对 URL 的理解和使用保持一致即可,不一定要求资源实际存在于 URL 所指示的物理路径下。
URL 更多的是一种逻辑上的标识符和约定,前后端通过遵循相同的规则来进行通信和交互。
然而,从良好的架构和设计角度来说,将相关的处理逻辑和资源按照有意义的方式组织在与 URL 结构相对应的代码结构中,有助于提高代码的可维护性和可读性。
但关键还是前后端的一致性,只要双方都明确并遵循相同的 URL 规则,系统就能正常运行。

路由处理函数

上述的handleGetRequest 就是路由处理函数
路由处理函数呢,简单来说就是当特定的路由(也就是 URL 路径)被访问,并且使用了特定的 HTTP 方法(比如 GET、POST 等)时,会被调用执行的函数。
之所以叫 “路由”,是因为它就像网络中的路由器一样。路由器根据数据包的目标地址来决定数据包的流向,而在 Web 开发中,路由根据客户端请求的 URL 和方法,决定将请求引导到对应的处理函数去进行处理,从而实现不同的功能。
打个比方,您可以把整个 Web 应用想象成一个大的办公楼,每个房间就是一个功能模块。而路由就像是办公楼里的指示牌,告诉来访者(客户端的请求)根据不同的目的地(URL 路径)找到对应的房间(处理函数)去处理相关事务。

关于http

GET/POST

在这里插入图片描述
GET是查询
POST是提交,用于实质作用于后端或者数据库

底层网络

1、http的传输层是TCP:
在这里插入图片描述
浏览器会首先向后端建立TCP连接,之后再访问后续的URL请求

2、前后端使用http的话,主要是使用URL进行网络数据交互:
在这里插入图片描述
URL负责通信方的指定(IP+port),同时还指定请求的方法(GET/POST),同时还携带GET方法的参数
(POST的数据在请求体里面)
不需要实现创建socket进行连接

关于前端的获取

当我们输入一个网址后,浏览器会使用DNS解析域名获取后端IP

之后建立TCP连接

之后,向后端发送URL,后端收到后,向前端发挥实质的html等页面文件

浏览器解析这些html css等,渲染页面

路由器网关

路由器的IP

简介

路由器可以有多个IP地址,这取决于其配置和网络结构。

公网IP(WAN IP)

WAN(广域网)IP地址:这是路由器连接到互联网时使用的公共IP地址。这个地址是由你的互联网服务提供商(ISP)分配的,可以是动态的(每次连接时可能会变化)或静态的(固定不变)。

私网IP(LAN IP)

LAN(局域网)IP地址:这是路由器在其内部网络中使用的私有IP地址。它用于与连接到路由器的设备(如电脑、手机等)进行通信。常见的LAN IP地址范围包括192.168.x.x、172.16.x.x和10.x.x.x。
路由器的LAN IP地址通常也是这些设备的默认网关地址。

无线网络IP(WIFI IP)

无线网络(Wi-Fi)IP地址:如果路由器支持Wi-Fi,它还会有一个或多个用于无线网络的IP地址。

这些地址通常与LAN IP地址相同,因为它们都在同一个内部网络中。

总的来说,路由器的主要IP地址是WAN IP地址和LAN IP地址。如果你需要配置网络设备,通常只需要关注LAN IP地址(即默认网关)。

查询

路由器私网IP

在这里插入图片描述
在这里插入图片描述
电脑上的config,中“无线局域网支配器 WLAN”,指的是无线局域网(WIFI)的一些网络信息
WIFI型局域网
可以看到电脑的内网IP、默认网关就是路由器的“私网IP”

补充:“以太网适配器”:
以太网指的是LAN口的有线连接,而WLAN是无线连接(WIFI)

路由器公网IP

在这里插入图片描述
使用以上命令(注意是if 不是 ip)

这个会显示电脑的公网IP,同时,也是路由器的公网IP,因为内网的任何设备都是使用的路由器的公网IP

LAN口与WIFI

简介

WIFI与LAN口是平级的,他们都是在局域网子网中的连接方式,只不过一个是无线,一个是有线

基本原理

将路由器的WAN口插上网线后,路由器确实会连接到互联网

1 连接WAN口
将从互联网服务提供商(ISP)提供的调制解调器或光猫出来的网线插入路由器的WAN口。

2 配置路由器:按照互联网服务提供商的手册配置路由器

3 连接LAN口:
使用网线连接LAN口
或者
使用WIFI连接LAN口

手动配置电脑IP时,默认网关

由上述已经可知,默认网关即路由器的私网IP

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

相关文章:

前后端、网关、协议方面补充

这里写目录标题 前后端接口文档简介前后端视角对于前端对于后端代码注册路由路由处理函数 关于httpGET/POST底层网络关于前端的获取 路由器网关路由器的IP简介公网IP(WAN IP)私网IP(LAN IP)无线网络IP(WIFI IP)查询路由器私网IP路由器公网IP LAN口与WIFI简介基本原理 手动配置电…...

如何在Mac上切换到JDK 17开发环境

在本文中,我将为您介绍如何在Mac上切换到JDK 17,包括下载和安装JDK 17、设置环境变量、在IntelliJ IDEA中配置项目、修改Maven编译配置,并最终使用mvn clean install重新编译项目。通过这个流程,您可以顺利地将开发环境升级到JDK …...

深入探索 TypeScript:从基础到高级特性

深入探索 TypeScript:从基础到高级特性 一、引言 在现代软件开发领域,TypeScript 已经成为了一种极具影响力的编程语言。它基于 JavaScript,并为其添加了强大的静态类型系统,使得代码在开发阶段就能进行更严格的类型检查&#x…...

Leetcode:118. 杨辉三角——Java数学法求解

题目——Leetcode:118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRow…...

SHELL脚本(Linux)

声明 学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…...

单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)

目录 1.单元测试 实现单元测试的方法: 注意事项: 2.集成测试 需注意事项: 实现集成测试的方法: 如何实现高效且可靠的集成测试: 3.系统测试 实现系统测试的方法: 须知注意事项: 4.验收测试 实现验…...

低代码集成多方API的简单实现

在现代软件开发中,集成多个API服务提供商已成为常见需求。然而,不同的API认证机制和数据格式使得集成过程变得复杂且耗时。为了应对这些挑战,本文将介绍一种低代码解决方案,通过配置化管理和简化的代码逻辑,帮助开发者…...

【测试框架篇】单元测试框架pytest(1):环境安装和配置

一、pytest简介 Pytest是Python的一种单元测试框架,与Python自带的unittest测试框架类似,但是比 unittest框架使用起来更简洁,效率更高。 二、pytest特点 Pytest是一个非常成熟的Python测试框架,主要特点有以下几点: 非常容易…...

Python数据分析NumPy和pandas(二十九、其他Python可视化工具)

与其他开源工具一样,在 Python 中创建图形有很多选项(太多了,无法一一列举)。自 2010 年以来,主要开发工作集中在创建用于在 Web 上发布交互式图形上。例如: Altair、Bokeh 和 Plotly 等工具,可…...

Unity中HDRP设置抗锯齿

一、以前抗锯齿的设置方式 【Edit】——>【Project Settings】——>【Quality】——>【Anti-aliasing】 二、HDRP项目中抗锯齿的设置方式 在Hierarchy中——>找到Camera对象——>在Inspector面板上——>【Camera组件】——>【Rendering】——>【Pos…...

Spring Boot实现文件上传与OSS集成:从基础到应用

目录 前言1. 文件上传的基础实现1.1 前端文件上传请求1.2 后端文件接收与保存 2. 集成第三方OSS服务2.1 准备工作2.2 编写OSS集成代码2.3 修改Controller实现文件上传至OSS 3. 文件上传的扩展:多文件上传与权限控制结语 前言 随着互联网应用的快速发展,…...

Python学习26天

集合 # 定义集合 num {1, 2, 3, 4, 5} print(f"num:{num}\nnum数据类型为:{type(num)}") # 求集合中元素个数 print(f"num中元素个数为:{len(num)}") # 增加集合中的元素 num.add(6) print(num) # {1,2,3,4,5,6} # 删除…...

linux startup.sh shutdown.sh (kkFileView)

linux启动脚本和关闭脚本startup.sh shutdown.sh (kkFileView) startup.sh DIR_HOME("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1&q…...

[MySQL]隐式类型转换

安全等号 <> 如果有参数为NULL&#xff0c;则除了相等比较运算符()&#xff0c;比较的结果为null。对于 nullnull&#xff0c;结果为true。 在select语句中&#xff0c;使用 时&#xff0c;结果不会包含值为 null 的记录&#xff0c;但如果使用安全等号 <> 来…...

面经总结1

文章目录 如何保证批量请求失败&#xff0c;只弹出一个toast1使用计数器&#xff1a;2使用标志变量&#xff1a; 如何减少项目里的if-else1使用多态2使用策略模式3使用字典映射4使用状态模式 babel-runtime 作用是啥如何实现 PDF 预览和下载1浏览器内置PDF阅读器2使用PDF.js库3…...

Oracle19C AWR报告分析之Instance Efficiency Percentages (Target 100%)

Oracle19C AWR报告分析之Instance Efficiency Percentages 一、分析数据二、详细分析2.1 Instance Efficiency Percentages (Target 100%)各项指标及其解释2.2 分析和总结 一、分析数据 二、详细分析 在 Oracle AWR (Automatic Workload Repository) 报告中&#xff0c;每个性能…...

数据结构--数组

一.线性和非线性 线性&#xff1a;除首尾外只有一个唯一的前驱和后继。eg&#xff1a;数组&#xff0c;链表等。 非线性&#xff1a;不是线性的就是非线性。 二.数组是什么&#xff1f; 数组是一个固定长度的存储相同数据类型的数据结构&#xff0c;数组中的元素被存储在一…...

nrm的安装及使用

nrm的安装及使用 NRM&#xff08;NPM Registry Manager&#xff09;是一个用于快速切换npm&#xff08;Node Package Manager&#xff09;源的工具。npm是Node.js的包管理工具&#xff0c;用于安装、发布、管理Node.js包。由于网络原因&#xff0c;直接使用npm官方源&#xff…...

【MatLab手记】 --从0到了解超超超详过程!!!

文章目录 MatLab笔记一、命令行窗口二、变量命名规则三、数据类型1. 数字2. 字符与字符串3. 矩阵3.1 矩阵创建3.2 矩阵的修改和删除3.3 矩阵的拼接与重构重排3.4 矩阵的运算方法3.5 矩阵的下标 4. 元胞数组&#xff08;类似数据容器&#xff09;5. 结构体 四、逻辑与流程控制五…...

从零创建vue+elementui+sass+three.js项目

初始化&#xff1a; vue init webpack projectnamecd projectnamenpm install支持sass: npm install sass --save-dev npm install sass-loader7.1.0 --save-dev npm install node-sass4.12.0 --save-devbuild/webpack.base.conf.js添加 rules: [...,{test: /\.scss$/,loade…...

Linux通过使用scp和sftp发送或拉取文件

在通过 telnet 登录到远程服务器之后&#xff0c;你无法直接使用 telnet 发送文件。telnet 是一个纯文本协议&#xff0c;不支持文件传输。要发送文件&#xff0c;你需要使用其他工具&#xff0c;如 scp 或 sftp。以下是使用这两种工具发送文件的方法&#xff1a; 使用 scp 发…...

Jtti:服务器总是自动重启怎么办?

服务器总是自动重启可能是由于多种原因引起的&#xff0c;包括硬件故障、软件问题、配置错误或环境因素。以下是一些常见原因和相应的解决方案&#xff1a; 1. 硬件问题 电源故障&#xff1a;电源供应不稳定或电源模块故障可能导致服务器重启。 解决方案&#xff1a;检查电源供…...

北京大学c++程序设计听课笔记101

基本概念 程序运行期间&#xff0c;每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址&#xff08;也称“入口地址”&#xff09;。我们可以将函数的入口地址赋给一个指针变量&#xff0c;使该指针变量指向该函数。然后通过指针变量就可以调用这个…...

一键生成本地SSL证书:打造HTTPS安全环境

一键生成本地SSL证书&#xff1a;打造HTTPS安全环境 日光下的寒林没有一丝杂质&#xff0c;空气里的冰冷仿佛来自故乡遥远的北国&#xff0c;带着一些相思&#xff0c;还有细微几至不可辨认的骆驼的铃声。–《心美&#xff0c;一切皆美》 在本地开发环境中启用 HTTPS 一直是许多…...

Unity类银河战士恶魔城学习总结(P124 CharacterStats UI玩家的UI)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了玩家属性栏&#xff0c;仓库&#xff0c;物品栏UI的制作 UI_StatSlot.cs 这个脚本是用来在Unity的UI上显示玩家属性&#xf…...

速盾:cdn 支持 php 吗?

在网络开发中&#xff0c;PHP 是一种广泛使用的服务器端脚本语言&#xff0c;用于创建动态网页和 web 应用程序。CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;在内容分发方面具有强大的功能&#xff0c;那么它是否支持 PHP 呢&#xff1f; C…...

在linux中使用nload实时查看网卡流量

在Linux系统中&#xff0c;可以使用多种工具来查看网卡流量。以下是一些常用的命令行工具&#xff1a; ifconfig&#xff1a;这是最基本的网络接口查看命令&#xff0c;但在最新的Linux发行版中&#xff0c;ifconfig命令已经被ip命令替代。 ip&#xff1a;用来查看和操作路由…...

【JavaEE进阶】Spring 事务和事务传播机制

目录 1.事务回顾 1.1 什么是事务 1.2 为什么需要事务 1.3 事务的操作 2. Spring 中事务的实现 2.1 Spring 编程式事务(了解) 2.2 Spring声明式事务 Transactional 对比事务提交和回滚的日志 3. Transactional详解 3.1 rollbackFor 3.2 Transactional 注解什么时候会…...

Flink1.19编译并Standalone模式本地运行

1.首先下载源码 2.本地运行 新建local_conf和local_lib文件夹&#xff0c;并且将编译后的文件放入对应的目录 2.1 启动前参数配置 2.1.2 StandaloneSessionClusterEntrypoint启动参数修改 2.1.3 TaskManagerRunner启动参数修改 和StandaloneSessionClusterEntrypoint一样修改…...

gitlab-development-kit部署gitlab《二》

gitlab-development-kit部署gitlab《一》 环境 mac 12.7.4 xcode 14.2 gdk 0.2.16 gitlab-foss 13.7 QA xcode源码安装 # https://crifan.github.io/xcode_dev_summary/website/xcode_dev/install_xcode/ # https://xcodereleases.comopenssl1.1 源码安装 # https://open…...