Skip to content

Daily Study

更新: 5/27/2025 字数: 0 字 时长: 0 分钟

Daily Plan

#todo

面试回顾

Http请求的幂等性

方法幂等性原因
GetGet方法的主要目的是安全通过请求的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进行修改,比如说用RedisSETNX
    • 唯一标识符:和Token机制类似,这里客户端每次发送请求会带一个全局唯一的标识,然后服务端进行验证
    • 请求参数:时间戳(不精确)或者版本号
    • 乐观锁

菜就多练

本站访客数 人次 本站总访问量