我应该运行 grunt build 来捆绑新的源吗?
[axios]修复 #184 如果数据为 false 则删除内容类型
回答
在新版本发布之前无需运行构建。感谢您的公关!
恭喜@vandosant 获得第一个 PR。棒极了!
问题:您真的要删除 Content-Type 标头 if 吗requestData === null
?我问是因为null
是一个有效的 JSON'able 值,就像false
.
看起来您可能希望这样:
if (requestData === undefined && key.toLowerCase() === 'content-type') {
我也有同样的疑问。这感觉是最向后兼容的,因为以前任何错误都会删除Content-Type
标头。在目前的实施中,我们现在只是让其false
通过,这是解决该问题的最小改变。
旧代码还会删除Content-Type
带有空字符串或数字有效负载的标头0
。既然您正在改变这些价值观的行为,为什么不继续改变它null
呢?
哦,还有NaN
。 ;-P
顺便说一句,我对此感觉并不强烈。你不应该仅仅因为我发表了这些评论就做出改变。无论你选择什么,我都不会让我的感情受到伤害。 :)
你说得对。也许我们应该删除对null
.已经很晚了,我正试图同时做几件事。我会好好睡一觉,以便明天能更清楚地思考。
查看代码历史记录后,它if (!data && key.toLowerCase() === 'content-type') {
从第一天起就一直在做。我曾希望找到一个问题或 PR 来帮助我理解为什么要引入这个。我不记得为什么,但评论明确指出“如果数据未定义,则删除内容类型”。
此时,代码中的请求数据已经被转换。因此数据是原语、 FormData
、ArrayBuffer
或之一ArrayBufferView
。这意味着我们不担心尝试,JSON.stringify
因为它已经被处理了。
我怀疑这种情况是出于以下两个原因之一:
Content-Type
防止设置但请求正文为空时出现错误Content-Type
为不发送内容的动词设置时防止出现错误(例如,GET
)
我认为我们可以删除空检查并处理undefined
.
:+1:
不愿意用一个错误替换另一个错误!我认为空检查太过分了并且可能会产生副作用。谢谢你抓住它。
……确实有副作用。请参阅:https://github.com/mzabriskie/axios/issues/362