如何在节点获取标头中使用嵌套对象/数组表示法?

Posted

技术标签:

【中文标题】如何在节点获取标头中使用嵌套对象/数组表示法?【英文标题】:How to use nested object/array notation in node-fetch headers? 【发布时间】:2020-03-12 19:55:48 【问题描述】:

我正在尝试根据以下规范从 typescript 应用程序进行 fetch() api 调用:

方法:POST 请求网址:https://cloud.memsource.com/web/api2/v1/projects/KmtNyVlz1skQd2aMVEipp7/jobs?token=AuthenticationToken (标题)内容处置:文件名*=UTF-8''file.txt (标题)Memsource:“targetLangs”:[“de”,“fr”] (Header) Content-Type: application/octet-stream 响应:作业 UID(例如 dOYgeXzAdAbj4xFjuEVZP2)

尝试在节点获取调用中对标头使用嵌套对象/数组值时出现以下错误。

(property) RequestInit.headers?: HeadersInit Type ' 'Content-Type': 细绳; “内容处置”:字符串; 'Memsource':'targetLangs': 细绳[]; ; ' 不可分配给类型 'HeadersInit'。类型 ' “内容类型”:字符串; “内容处置”:字符串; '内存源': 'targetLangs': 字符串[]; ; ' 缺少以下属性 来自“标题”类型:forEach、追加、删除、获取和 7 个更多.ts(2322) index.d.ts(45, 5):预期类型来自属性“标题” 这是在“RequestInit”类型上声明的

下面是给出问题的代码行。

let project: Promise<Response> = await fetch(apiURL, 
    method: 'POST',
    headers: 
      'Content-Disposition': 'd:/_export/en_US.json',
      'Memsource':  'targetLangs': ['fr_fr', 'es_es'] ,
    ,
  ).then(res => res.json())
    .then(json => json)
    .catch(err => console.log(err));

我应该怎么做才能解决这个问题?我不能使用这个符号吗?

【问题讨论】:

【参考方案1】:

我非常努力地研究了这个问题,并了解到 HTTP 请求标头(或 Node-Fetch 中的 Headers 对象)仅支持简单的键/值对。这就是嵌套 json 值在这种情况下失败的原因。

我厌倦了通过在 整个 json 并转义所有内部引号,如下所示,它就像魅力一样。

'Memsource': ' \'targetLangs\': [\'fr_fr\', \'es_es\'] '

一旦我确认它可以工作,我将其更改为 JSON.stringify() 语句,它运行良好。哦,我不得不在 'Content-Disposition' 值中修正一个小错误。

var customHeader = 'targetLangs': ['fr_fr', 'es_es'],;
let project: Promise<Response> = await fetch(apiURL, 
    method: 'POST',
    headers: 
      'Content-Disposition': 'filename=d:/_export/en_US.json',
      'Memsource': JSON.stringify(customHeader),
    ,
  ).then(res => res.json())
    .then(json => json)
    .catch(err => console.log(err));

我想我可以分享一下,以防其他人需要这些信息。

【讨论】:

以上是关于如何在节点获取标头中使用嵌套对象/数组表示法?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用把手 (hbs) 迭代嵌套数组和对象?

如何在JavaScript中过滤嵌套数组中的对象?

如何从嵌套的对象数组中获取每个父级的值

如何将带有对象的数组中的数据动态添加到嵌套数组中?

MongoDB在对象数组中获取嵌套在对象数组中的单个对象

如何在 R 中使用 tidyjson 处理嵌套的空 JSON 数组