Daily Study
更新: 5/27/2025 字数: 0 字 时长: 0 分钟
Daily Plan
#todo
面试回顾
Http请求的幂等性
方法 | 幂等性 | 原因 |
---|---|---|
Get | 是 | Get方法的主要目的是安全通过请求的URL来检索信息,并不包含请求体,因此不能够携带客户端到服务端的信息来创建、更新或者修改资源数据。另外:Get在TCP中只会发一个包来请求数据。 |
Post | 否 | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。另外:POST在TCP中会发两个包,第一个包告诉服务端”我要发消息“,第二个包才发数据 |
Put | 是 | 从客户端向服务器传送的数据取代指定的文档的内容。(全部取代),直接把实体部分的数据替换到服务器的资源,我们多次调用它,只会产生一次影响,所以满足幂等性。 |
Delete | 是 | 请求服务器删除指定的页面。 |
如何处理post
请求满足幂等性:
参考链接:腾讯二面:如何保证接口幂等性?高并发下的接口幂等性如何实现? - 码农Academy - 博客园
- 前端
- 页面控制,按钮点一次就变灰
PRG=Post/Redirect/Get
模式,服务端收到Post
请求修改数据后,返回给客户端一个重定向302或者303响应码,指示客户端接下来发送Get
请求到一个特定的URL
,之后就变成Get
请求
- 后端
Token
机制:服务端收到Post
请求,会生成一个唯一的、有时效性的Token
(可以存时间戳或者版本号)存在Redis
或者数据库中,返回给客户端,之后的API
调用都需要带上这个Token
做校验。如果Token
未过期且未使用过,则执行并修改Token
状态,这里要通过原子操作对Token
进行修改,比如说用Redis
的SETNX
- 唯一标识符:和
Token
机制类似,这里客户端每次发送请求会带一个全局唯一的标识,然后服务端进行验证 - 请求参数:时间戳(不精确)或者版本号
- 乐观锁