不同HTTP方法的作用是什么?使用对应方法是约定还是有专属特性支持?
常见HTTP方法的作用
GET:请求获取指定路径的资源,属于只读操作,不会修改服务端资源,参数通常拼接在URL之后,是使用最广泛的HTTP方法。POST:向指定路径提交数据以触发处理逻辑,比如提交表单、新增数据、上传文件,数据存放在请求体中,通常会带来服务端资源的新增或修改。PUT:用请求体中的数据完全替换指定路径的现有资源,属于更新操作,具备幂等性——连续调用多次的结果和调用一次完全相同。DELETE:请求服务端删除指定路径的资源,也具备幂等性,多次删除同一资源的最终状态和单次删除一致。HEAD:逻辑和GET完全一致,仅要求服务端返回响应头、不返回响应体,通常用来快速校验资源是否存在、获取资源大小/更新时间等元信息,不需要下载完整资源,效率更高。
HTTP方法是操作约定还是有专属特性
答案是两者兼有:它首先是语义层面的行业约定,但也确实有不少HTTP原生特性只有使用对应方法才能触发。
- 约定属性:绝大多数服务端框架不会强制校验方法和操作的匹配性,你硬要写用GET接口做删除、用POST接口做更新也能正常运行,语义上的区分是行业共识,目的是让前后端、代理、网关等链路中所有环节都能统一识别请求的操作意图,降低协作成本。
- 专属特性属性:有大量HTTP体系的内置规则是和方法绑定的,举几个常见例子:
- 缓存规则:HTTP缓存体系默认只对
GET、HEAD请求生效,POST/PUT/DELETE默认不会被缓存,除非响应头显式配置了允许缓存的参数。 - 重试规则:HTTP规范定义了
GET/HEAD/PUT/DELETE都是幂等方法,网关、反向代理遇到这类请求超时的时候,会自动触发重试;非幂等的POST请求默认不会被自动重试,避免重复提交导致数据异常。 - 跨域规则:浏览器CORS机制中,只有
GET/HEAD/POST有机会走简单请求逻辑、不需要提前发OPTIONS预检请求,PUT/DELETE无论参数如何,都会强制触发预检请求校验跨域权限。 - 爬虫规则:主流搜索引擎爬虫默认只会爬取
GET、HEAD类型的资源,不会主动调用POST/PUT/DELETE接口,避免误改服务端资源。
- 缓存规则:HTTP缓存体系默认只对
内容的提问来源于stack exchange,提问作者mewi
相关产品推荐
相关产品推荐

