当前位置:首页 > 娱乐

ajax调用接口headers是否一般放在第一句

看了一圈同事写的调用第句ajax代码,十有八九把headers放在第三行或者第五行。接口我自己的般放习惯是放在第一句,这个顺序不是调用第句随手写的,是接口有讲究的。

先看个反面教材。般放上周老张调第三方支付接口,调用第句代码长这样:

$.ajax({  url: '/api/pay',接口 method: 'POST', data: { ...}, headers: { 'X-Token': token} })

看着没毛病对吧?结果token过期,报401。般放老张愣是调用第句查了半小时,才发现是接口headers里的token没拼对。要是般放headers放第一句,他扫一眼就能看见。调用第句

为什么headers该放第一句?接口因为它是请求的“门禁卡”。你进大楼得先刷卡,般放门开了才谈得上坐电梯、找工位。ajax请求也一样——服务器先验headers里的认证信息,验不过直接拒,压根不会走到data那一步。把headers写在后面,等于把门禁卡揣兜里,先去按电梯,逻辑上就别扭。

再说代码可读性。人眼扫描代码是从上往下的,第一眼看到的是这个请求的“身份”。你把headers放第一句,读代码的人立刻知道:哦,这接口要带token、要指定内容类型。而不是得翻到第五六行才恍然大悟。团队里总有新人,别让人家猜。

当然,有人会说“放哪不都一样,反正最终都会发出去”。这话对,也不对。运行时顺序确实一样,但写代码是给人看的。我见过一个老项目,headers散落在不同位置,有的在url后面,有的在success回调里动态加——那种代码维护起来真想摔键盘。

还有个细节:某些拦截器或全局配置会覆盖局部headers。你把headers放第一句,至少从视觉上强调了它的重要性,提醒后来者“这地儿有覆盖逻辑,改的时候小心”。我吃过亏——有次把headers放最后,结果被一个全局的beforeSend钩子给冲掉了,接口静默失败,排查了一下午。

不过也有例外。如果你用的是axios,拦截器逻辑复杂,或者要动态计算headers值,那放第一句反而别扭。这时候我建议把headers提取成变量,写在ajax调用前面,然后传入。但变量声明和ajax之间,还是保持headers紧跟在url后面——这是折中方案。

说到底,规矩是死的,人是活的。我见过把headers放第一句写得一团糟的,也见过放最后但注释写得明明白白的。核心就一条:别让读你代码的人费劲找关键信息。我的个人选择是headers第一句,简单粗暴,省得废话。

顺手翻了下手头几个开源项目的源码,jQuery官方示例里headers确实写在method后面,但人家注释写得多。你要是懒得写注释,就把headers放第一句,等于用代码位置当注释用。

分享到: