唤醒手腕 Golang 语言 HTTP 请求学习笔记(HTTP 基本理论、net/http 库)
创始人
2025-05-28 03:06:36
0

HTTP 介绍

HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。用作客户端和服务器之间的请求。

客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应。其中响应包含有关请求的状态信息,还可能包含请求的内容。

HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0

协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

当我们访问一些网页时,是显示通过 HTTPS 来进行通信的,并且当下大多数的网页都是通过 HTTPS 来进行通信的,因为 HTTPS 在 HTTP 的基础上做了一个加密的工作。

HTTP/1.1 协议中共定义了 8 种方法,来表明 Request-URL 指定的资源不同的操作方式

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD 方法HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

HTTP 协议工作过程

当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。

客户端 Client: 主动发起网络请求的一端服务器 Server: 被动接收网络请求的一端请求 Request: 客户端给服务器发送的数据响应 Response: 服务器给客户端返回的数据

URL 基本介绍

平时我们俗称的”网址“,其实就是 URL(Uniform Resource Locator),翻译为统一资源定位符。

URL 的标准格式如下:

协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

URL 的完整格式如下:

协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

GET、POST 方法区别

两者没有本质区别,使用GET的场景,完全可以使用 POST 替代,使用POST的场景也同样可以使用 GET 替代。

语义不同:GET 习惯上用于从服务器上获取数据,POST是向服务器传送数据。格式不同:由于body一般是空的,所以GET习惯上通过 query string 来传输数据;而 POST 方法的 query string 一般为空,所以 POST 习惯上使用 body 来传递数据。

幂等性。一般情况下,程序员会把GET请求的处理实现成幂等,而POST请求的处理,不要求实现幂等。

幂等 (idempotence)

幂等的数学概念:幂等是源于一种数学概念。

幂等性函数数学定义

如果在一元运算中,xxx 为某集合中的任意数,如果满足 f(x)=f(f(x))f(x) = f(f(x))f(x)=f(f(x)) ,那么该 fff 运算具有幂等性,比如绝对值运算 abs(a)=abs(abs(a))abs(a) = abs(abs(a))abs(a)=abs(abs(a)) 就是幂等性函数。

如果在二元运算中,xxx 为某集合中的任意数,如果满足 f(x,x)=xf(x,x) = xf(x,x)=x,前提是 f 运算的两个参数均为 xxx,那么我们称 fff 运算也有幂等性,比如求大值函数 max(x,x)=xmax(x, x) = xmax(x,x)=x 就是幂等性函数。

幂等性在开发中的概念

在数学中幂等的概念或许比较抽象,但是在开发中幂等性是极为重要的。简单来说,对于同一个系统,在同样条件下,一次请求和重复多次请求对资源的影响是一致的,就称该操作为幂等的。比如说如果有一个接口是幂等的,当传入相同条件时,其效果必须是相同的。

特别是对于现在分布式系统下的 RPC 或者 Restful 接口互相调用的情况下,很容易出现由于网络错误等等各种原因导致调用的时候出现异常而需要重试,这时候就必须保证接口的幂等性,否则重试的结果将与第一次调用的结果不同,如果有个接口的调用链 A->B->C->D->E,在 D->E 这一步发生异常重试后返回了错误的结果,A,B,C 也会受到影响,这将会是灾难性的。

在生活中常见的一些要求幂等性的例子:

案例一:博客系统同一个用户对同一个文章点赞,即使这人单身30年手速疯狂按点赞,那么实际上也只能给这个文章 +1 赞。

案例二:在微信支付的时候,一笔订单应当只能扣一次钱,那么无论是网络问题或者 bug 等而重新付款,都只应该扣一次钱。

幂等性与并发安全

幂等性是系统接口对外的一种承诺,而不是实现,承诺多次相同的操作的结果都会是一样的。而并发安全问题是当多个线程同时对同一个资源操作时,由于操作顺序等原因导致结果不正确。

这两个实际上是完全独立的两个问题,比如说同一笔订单即使你不停的提交支付,如果扣除了多次钱,就说明该操作不幂等。而有多笔订单同时进行支付,最后扣除金额不是这多笔金额的总和,那么说明该操作有并发安全问题。所以幂等性和并发安全是完全两个维度的问题,要分开讨论解决。

相关内容

热门资讯

“国补”继续!10月将下达第四... 8月1日国家发展改革委召开新闻发布会,解读当前经济形势和经济工作。国家发展改革委政策研究室有关负责人...
港股IPO,重大调整! 8月1日,港交所就优化首次公开招股市场定价及公开市场规定的咨询文件刊发咨询总结,并就持续优化公众持股...
两江新区:148家智慧医疗装备... 近日,江小妹获悉, 2025年上半年, 作为重庆高新产业的“主阵地”, 两江新区生命健康产业增长势头...
造纸江湖浮沉:废纸回收价5年内... 本报(chinatimes.net.cn)记者何一华 李未来 北京报道 “最近收废纸的价格涨了,以前...
国邦医药已累计回购538万股公... 8月1日晚间,国邦医药发布公告称,截至7月31日,公司通过集中竞价交易方式累计回购股份537.527...
融资杠杆误区:满仓加杠杆不对,... 融资杠杆作为资本市场中通过借入资金放大投资规模的工具,其核心是借助信用机制扩大交易筹码,在提升资金使...
“反内卷”的风吹到了惠民保 记者 姜鑫 7月31日晚,国家金融监督管理总局办公厅发布了《关于推动城市商业医疗险高质量发展的通知》...
酒类即时零售调查:市场规模突破... 出品|搜狐财经 作者|饶婷 编辑|李文贤 【编者按】当数字浪潮席卷消费市场,酒业的 “触网” 之路早...
股票行情快报:赫美集团(002... 证券之星消息,截至2025年8月1日收盘,赫美集团(002356)报收于3.2元,上涨0.31%,换...
刘庆峰说马斯克不懂AI:科大讯... 文:互联网江湖 刘致呈 敢直言马斯克不懂AI的人,出现了。 最近,科大讯飞董事长刘庆峰在与正和岛总...
国债等利息收入增值税恢复征收,... 界面新闻记者 | 杨志锦 界面新闻编辑 | 王姝 财政部、税务总局8月1日发布公告称,自2025...
历史重演?美国7月非农暴雷,美... 来源:第一财经 作为本周最受关注的数据,美国7月非农就业报告意外不及预期,加之此前两个月数据大幅下修...
8月8日起,新发行国债等债券的... 两部门发文恢复征收国债、地方债、金融债券利息收入增值税 财政部、国家税务总局1日联合对外发布公告称,...
首个旧改做地转化宅地 广州市客... 观点网7月31日,广州越秀区挂牌市客运站商住地块,计划于9月1日10时竞价。 该地块位于环市路以南,...
就业引擎熄火,美联储还能“稳住... 来源:市场资讯 来源:汇通网 汇通财经APP讯——7月美国非农就业数据大幅低于预期,仅新增7.3万个...
【公告精选】601088,筹划... 中国神华:筹划发行股份及支付现金购买资产并募集配套资金 股票8月4日起停牌 九号公司:上半年净利12...
原创 一... “老铁们,这周行情像不像坐过山车?指数蔫了吧唧,个股却玩起高空蹦极!南新制药一周暴涨78%,市值差点...
星巴克中国业务竞购名单曝光!腾... 《科创板日报》8月1日讯(记者 徐赐豪),星巴克中国业务的未来发展又有了新变数。 据报道,有知情人士...
带娃去四川三天两夜旅游攻略!成... 我一直梦想着带家人来一场说走就走的旅行,而四川,这个充满魅力的地方,就成了我们的首选。四川不仅有壮丽...
江苏银行:截至目前绿色融资余额... 8月1日,上证报记者从江苏银行获悉,截至目前,该行绿色融资余额已突破7000亿元,服务绿色企业超12...