【一文了解】网络请求

目录

1.什么是网络请求?

2.按「请求方式/请求动词」分类

[1) GET请求:【查】获取数据](#1) GET请求:【查】获取数据)

[2) POST请求:【增/改】提交/上传数据](#2) POST请求:【增/改】提交/上传数据)

3)PUT请求:【改】修改/更新数据

[4) DELETE请求:【删】删除数据](#4) DELETE请求:【删】删除数据)

5)PATCH请求:【改】局部更新数据

6)HEAD请求:仅获取响应头

3.按「传输协议」分类

1)HTTP请求

2)HTTPS请求

4.其他常用分类

4.1.按「返回数据格式」分类

1)JSON请求/响应

2)XML请求/响应

4.2.按「请求目的/用途」分类

1)接口请求

2)资源下载请求

3)文件上传请求

4)长连接请求

4.3.按「请求特征」分类

1)同步请求

2)异步请求

5.网络请求的完整生命周期


本篇文章来分享一下网络请求,网络请求是开发中客户端(游戏/APP/网页)和服务端交互数据的核心方式,所有项目都会用到(如请求后端接口、加载网络图片、提交表单数据、下载资源都是网络请求)。

1.什么是网络请求?

客户端主动发起、向服务端/远程服务器要数据/ 发数据 / 要资源,服务端接收后返回对应结果的过程,就叫网络请求

● 核心本质:客户端与服务端的数据交互通道

● 举例:Unity里提交用户表单、加载远程配置表、获取排行榜数据、下载更新资源包、上传截图,都是网络请求;网页里登录账号、加载商品列表,也是网络请求。

2.按「请求方式/请求动词」分类

按「请求方式/ 请求动词」 分类网络请求, 是开发中最核心、最常写代码用到的分类,所有网络请求都基于这套标准(HTTP/HTTPS协议规范) ,请求动词决定了这次请求要做什么操作,所有后端接口、Unity 网络请求都会标注该请求的类型,一共6个核心类型。

1) GET请求:【查】获取数据

● 核心作用:向服务端查询/读取数据,只做读操作,不修改服务端任何数据

● 特点:参数直接拼接在请求URL后面(比如 https://xxx.com/api/getUser?id=1001)、请求数据量有限、速度快、安全性低(参数可见)

● 开发场景:Unity里加载排行榜、获取用户信息、加载配置表、读取公告内容、加载网络图片地址,90%的查数据需求都用 GET

2) POST请求:【增/改】提交/上传数据

● 核心作用:向服务端提交/上传/新增数据,也可用于修改数据,会改变服务端的数据/状态

● 特点:参数放在请求请求体中(不在URL显示)、支持提交海量数据、速度略慢于GET、安全性高(参数不可见)

● 开发场景:Unity里用户注册、登录提交账号密码、提交表单数据、上传用户头像、提交游戏战绩、创建订单,所有需要提交数据的需求必用POST

3)PUT请求:【改】修改/更新数据

● 核心作用:向服务端完整更新一条数据(全量修改),语义上是修改

● 特点:和POST类似,参数在请求体,有幂等性,即多次请求结果一致(比如修改用户昵称,请求1次和10次结果一样)

● 开发场景:Unity里修改用户昵称、修改个人资料、更新游戏角色信息、修改配置参数,适合「全量更新一条完整数据」

4) DELETE请求:【删】删除数据

● 核心作用:向服务端删除指定数据,语义上是删除

● 特点:参数可拼URL/放请求体,同样有幂等性,多次删除同一数据结果一致

● 开发场景:Unity里删除游戏内的收藏内容、删除用户的历史记录、删除订单,所有删除操作都用DELETE。

5)PATCH请求:【改】局部更新数据

● 核心作用:向服务端只更新一条数据的某一部分(局部修改),比如只改用户头像,不改昵称和手机号

● 特点:比PUT更灵活,传输数据量更小,开发中用的少,后端接口不一定会开放该类型

● 场景:精细的局部数据修改,Unity项目中一般用POST替代即可

6)HEAD请求:仅获取响应头

● 核心作用:只请求服务端返回「响应头信息」,不返回具体数据内容

● 场景:判断文件是否存在、获取文件大小/更新时间,Unity开发中几乎用不到

总结:牢记常用的4个,增 (POST)、删 (DELETE)、改 (PUT)、查 (GET)

3.按「传输协议」分类

按「传输协议」 分类网络请求, 决定请求的底层规则,开发必知所有网络请求都基于传输协议实现,协议决定了数据怎么传、传的是否安全、速度快慢,Unity开发中只用到如下2种核心协议。

1)HTTP请求

● 全称:超文本传输协议 (HyperText Transfer Protocol)

● 特点:明文传输,数据在网络中是裸奔的,容易被劫持、篡改,安全性低;传输速度快,请求简单

2)HTTPS请求

● 全称:超文本传输安全协议 (HyperText Transfer Protocol Secure)

● 特点:HTTP+SSL/TLS加密,数据传输前会加密,传输后解密,无法被劫持篡改,安全性极高;速度略慢于HTTP

4.其他常用分类

4.1.按「返回数据格式」分类

网络请求的本质是传数据,数据的格式决定了怎么解析,只有2种格式:

1)JSON请求/响应

● 格式:轻量级文本格式,比如{"code":200,"msg":"success","data":{"name":"test","id":1001}}

● 优点:体积小、解析快、跨平台、前后端通用,Unity中用JsonConvert/JsonUtility等可以轻松解析

● 场景:所有接口请求(登录、注册、排行榜、配置表),Unity开发的绝对主流,99%的Unity项目首选

2)XML请求/响应

● 格式:标签式文本格式,比如 <user><id>1001</id><name>test</name></user>

● 缺点:体积大、解析繁琐、效率低

● 场景:仅老项目兼容,Unity新项目完全不用

4.2.按「请求目的/用途」分类

在Unity里写的所有网络请求,都能归到这些场景里:

1)接口请求

请求后端API接口(GET/POST),比如登录、注册、获取数据、提交数据,最核心的网络请求。

2)资源下载请求

下载图片、音频、视频、预制体、更新包、配置表,比如加载远程头像、下载游戏资源。

3)文件上传请求

上传图片、视频、日志文件,比如上传用户截图、上传游戏报错日志。

4)长连接请求

实时通信(比如游戏内聊天、实时对战),用WebSocket协议,不是普通的HTTP请求。

4.3.按「请求特征」分类

1)同步请求

● 特点:发起请求后,程序会卡住等待服务端返回结果,直到拿到结果才继续执行后续代码;

● 缺点:Unity中严禁使用!会导致游戏卡死、界面无响应,哪怕等待1秒也会让玩家感知卡顿;

● 总结:Unity中永远不要写同步网络请求。

2)异步请求

● 特点:发起请求后,程序不会卡住,继续执行其他代码,服务端返回结果后,会通过回调/委托/协程通知,再处理结果;

● 优点:不阻塞主线程,游戏界面流畅,无卡顿;

● 总结:Unity中所有网络请求,必须用异步方式实现,没有例外!

5.网络请求的完整生命周期

不管是哪种请求、哪种协议,所有网络请求都遵循固定的生命周期,开发中遇到请求失败、无响应、数据错误,按这个流程排查,几乎能找到问题:

客户端准备 → TCP三次握手 →【HTTPS专属:TLS握手 】 → 发送请求 → 服务端处理 → 返回响应 → TCP四次挥手 → 客户端解析

常见问题排查:请求失败 = 连接失败;无响应 = 超时;数据错误 = 解析失败;返回码 404 = 接口地址错;返回码 500 = 服务端报错。

想要详细了解,可以参考【超详细】网络请求的完整生命周期

好了,本次的分享到这里就结束啦,希望对你有所帮助~

相关推荐
L1624762 小时前
nmcli 命令和手动修改网卡配置文件详细讲解(最后附带配置脚本参考学习)
服务器·网络·php
北京盟通科技官方账号2 小时前
Docker 容器化部署 EtherNet/IP 协议栈(ESDK):Windows 与国产银河麒麟 V10 实测对比
网络·网络协议·tcp/ip·docker·国产系统·ethernet/ip·工业协议
Tipriest_2 小时前
排查一个多网卡的机器上不了网的问题(更改默认路由)
网络·网关·路由·多网卡
EucliwoodXT2 小时前
【Unity】项目部署Linux服务器
linux·unity·游戏引擎
微光守望者2 小时前
Unity小知识【2】:Transform与RectTransform,UI和3D对象的空间转换秘诀
ui·3d·unity
2401_873587822 小时前
Linux——网络编程套接字
linux·服务器·网络
德迅云安全—珍珍2 小时前
什么是 DNS 缓存投毒攻击,有什么防护措施
网络·缓存
心之所向,自强不息2 小时前
URP的渲染流程
unity
乾元2 小时前
兵器谱——深度学习、强化学习与 NLP 在安全中的典型应用场景
运维·网络·人工智能·深度学习·安全·自然语言处理·自动化