【问题标题】:Which is better practice when setting headers for a fetch in Javascript?在 Javascript 中为获取设置标头时哪个更好?
【发布时间】:2021-01-20 19:33:53
【问题描述】:

使用新的 Headers() 对象为 fetch 设置标头有什么区别,就像这样。

const headers = new Headers()
headers.set('User','Bob')

与使用更少的代码分配所需的标头而不使用新的 Header() 类相比。

const headers = { User: 'Bob'}

在 JavaScript 中执行 fetch 时。
如果两者都获得相似的结果,那么在获取数据时哪一个是最佳实践?

【问题讨论】:

  • 您可能已经注意到您的fetch 可以使用任何一种方式。 litteral 和 Header 的实例之间存在差异(实例有有用的方法),但你为什么要关心?为什么这是一个问题
  • 我很好奇哪种方式是最佳实践,因为人们可以互换使用这两种方式,所以我想问一下。我还认为其他新开发人员将来可能会发现这很有用,尽管有些人认为这是一个愚蠢的问题。我也想了很多xD
  • 我很困惑为什么这被否决了。在学习这些东西时,有时获得一个高层次的概述来确定重要性是有帮助的。这个例子是在 JS 中你可以用不同的方式创建相同的东西——但更重要的是,Headers 只是一个简单的对象! :)

标签: javascript http-headers fetch-api


【解决方案1】:

Headers 对象的行为与 Map 类似,不同之处在于标题键不区分大小写。

标题:

var headers = new Headers();

headers.set('CONTENT-tYpE', 'text/html');

console.log(headers.get('content-type')); // text/html

地图:

var headers = new Map();

headers.set('CONTENT-tYpE', 'text/html');

console.log(headers.get('content-type')); // undefined

对象:

var headers = {};

headers['CONTENT-tYpE'] = 'text/html';

console.log(headers['content-type']); // undefined

(当传递给 fetch 或 http 请求时,无论数据类型如何,所有标头名称都会被规范化)

【讨论】:

  • 另一个小区别是Headers 有一个.append() 方法,您可以使用该方法为同一个标头设置多个值,而Map 不能这样做跨度>
【解决方案2】:

我厌倦了人们试图为 JavaScript 中的所有内容定义一个单一的“最佳实践”。这里的答案是,就 fetch API 而言,没有“更好”的方法。

根据您在调用 fetch 之前所做的工作,乱码对象或 Headers 实例可能看起来更好。例如,从 JSON 配置中获取硬编码的 headers,实例化 Headers 会浪费代码;另一方面,如果您需要编写一些逻辑来生成标头并选择要包含的标头,标头具有更明确且不区分大小写(即更安全)的方法。

但这只是我对我认为是明确示例的意见。我敢肯定,有些人会建议始终使用 litterals,因为他们想要不变性,而其他人会说 Headers 更具表现力和更好的类型。无论哪种方式,这都不是 StackOverflow 的用途。

【讨论】:

  • 谁说过最佳实践或更好的方法? OP 询问两段不同代码之间的区别。
  • OP 在 cmets 中澄清他们想要“最佳实践”。这不是我编的。
猜你喜欢
  • 2016-03-11
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 2013-05-25
  • 1970-01-01
相关资源
最近更新 更多