使用jQuery Ajax时为何各类请求操作普遍采用POST方法?
你观察到的使用POST方法实现增、改、删各类业务请求的做法在jQuery AJAX开发场景中非常普遍,核心原因有以下几点:
- 兼容性问题兜底:早期很多旧版浏览器、网络代理、企业防火墙仅支持GET、POST两种标准HTTP方法,使用PUT、DELETE等语义化方法发送请求时,很容易被中间节点拦截、丢弃,统一使用POST可以完全规避这类兼容性风险,不需要额外做适配处理。
- 服务端适配成本低:早年主流的服务端开发框架默认只会解析GET和POST请求的请求体参数,要是使用PUT、DELETE方法,需要手动修改框架配置开启对应请求方法的参数解析规则,不少开发者为了减少配置工作量,直接选择全用POST处理所有修改类业务。
- 原生表单能力限制:HTML原生的
<form>表单仅支持GET、POST作为提交方法,要是项目需要做无JS的降级兼容,统一用POST可以保证AJAX提交和原生表单提交的接口逻辑完全一致,不需要开发两套接口规则。 - 降低小项目开发成本:对于不需要严格遵循RESTful接口规范的中小型项目,不需要额外根据HTTP方法区分业务动作,只要看接口路径或者请求参数里的动作标识就能处理业务,开发流程更简单,出错概率更低。
如果你的项目需要严格遵循RESTful规范,现在的现代浏览器和主流服务端框架都已经完整支持PUT、DELETE等语义化HTTP方法,你可以直接修改AJAX配置中的method参数即可使用,部分框架也支持通过_method隐藏字段伪装请求方法,兼容旧的服务端逻辑。
你示例中的代码如果改为标准语义化方法写法如下:
// 新增评论 对应POST方法 $.post("post-comments.php", { author: "Jeremy", message: "new message" }, (data) => { console.log(data); } ); // 修改评论 对应PUT方法 $.ajax({ url: "put-comments.php", method: "PUT", data: { id: 62, author: "Janice", message: "new updated message" }, success: (data) => { console.log(data); } }); // 删除评论 对应DELETE方法 $.ajax({ url: "delete.php", method: "DELETE", data: { id: 61 }, success: (data) => { console.log(data); } })
内容的提问来源于stack exchange,提问作者koreanjones
相关产品推荐
相关产品推荐

