Уничтожить res.headers - PullRequest
       18

Уничтожить res.headers

0 голосов
/ 28 февраля 2020

Я пытаюсь деструктурировать заголовки response.headers моего запроса ios .get, потому что мне нужен только токен x-csrf. Это всегда вторая позиция. Вот как выглядит ответ res.headers

{
      'content-type': 'application/json; charset=utf-8',
      'x-csrf-token': '17hoqAWEwVmcN32wYgN9WA==',
      'cache-control': 'no-cache, no-store',
      dataserviceversion: '2.0',
      'c4c-odata-response-time': '1195  ms',
      date: 'Fri, 28 Feb 2020 10:06:55 GMT',
      'transfer-encoding': 'chunked',
      connection: 'close, Transfer-Encoding',
      'set-cookie': [
        'sap-usercontext=sap-client=041; path=/;HttpOnly;Secure',
        '
      ],
      'strict-transport-security': 'max-age=31536000 ; includeSubDomains'
    }

Я пытался

let{a,b} = res.headers;
      console.log(b);

и

let[,b] = res.headers;
      console.log(b);

Но я получаю: undefined не является функцией

1 Ответ

2 голосов
/ 28 февраля 2020

Это всегда вторая позиция

Это не имеет значения при разрушении объекта. Вы используете ключ, а не позицию.

Чтобы получить его:

const {'x-csrf-token': token} = res.headers;

или

const {headers: {'x-csrf-token': token}] = res;

Live Пример:

const res = {
  headers: {
    'content-type': 'application/json; charset=utf-8',
    'x-csrf-token': '17hoqAWEwVmcN32wYgN9WA==',
    'cache-control': 'no-cache, no-store',
    dataserviceversion: '2.0',
    'c4c-odata-response-time': '1195  ms',
    date: 'Fri, 28 Feb 2020 10:06:55 GMT',
    'transfer-encoding': 'chunked',
    connection: 'close, Transfer-Encoding',
    'set-cookie': [
      'sap-usercontext=sap-client=041; path=/;HttpOnly;Secure'
    ],
    'strict-transport-security': 'max-age=31536000 ; includeSubDomains'
  }
};
const {'x-csrf-token': token} = res.headers;
console.log(token);
const {headers: {'x-csrf-token': token2}} = res;
console.log(token2);

Ключевым моментом здесь является то, что синтаксис деструктурирования является обратным к литералу объекта, просто вместо key: value означает "поставить value для свойства key ", это означает" взять значение из свойства key и поместить его в value "- то есть информация в литерале течет справа налево, а информация в потоках деструктуризации слева направо. Вот рисунок из главы 7 моей новой книги (подробности см. В моем профиле):

enter image description here

В этом конкретном случае деструктуризация не купит вас много против

const token = res.headers['x-csrf-token'];
...