Есть ли способы отправить несколько заголовков в одном HTTP-запросе с помощью Angular 2? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь сделать HTTP-запрос POST, который содержит несколько заголовков, используя Angular 2, но данные, которые я публикую, имеют нулевое значение в моем бэкэнд-API, и когда я изменяю свой заголовок следующим образом:

{
'X-API-KEY': authToken,
'Content-Type': 'text/plain',
'roomName':roomName,
'locationOrCommand':locationOrCommand
}

запрос никогда не отображается в API.Однако, когда у меня есть только один заголовок в запросе, например:

{'X-API-KEY': authToken}

мой API может получить эти данные (authtoken), я уже проверяю swagger и почтальон для моего внутреннего API, он работаетхорошо.Что мне делать, как?

Я пробовал несколько способов создания заголовка, например:

  1. { headers: new HttpHeaders().append('X-API-KEY', authToken).append('roomName',roomName).append('locationOrCommand',locationOrCommand).append('Content-Type', 'text/plain')}
  2. { headers: new HttpHeaders().set('X-API-KEY', authToken).set('roomName',roomName).set('locationOrCommand',locationOrCommand).set('Content-Type', 'text/plain')}
  3. { headers: new HttpHeaders().set('X-API-KEY', authToken).append('roomName',roomName).append('locationOrCommand',locationOrCommand).set('Content-Type', 'text/plain')}

Я, кроме своего API, могу получать данные, которые публикуются из внешнего интерфейса.

1 Ответ

0 голосов
/ 12 февраля 2019

HttpHeaders является неизменным, поэтому при вызове append или set он возвращает новый объект.

let header = new HttpHeaders();
let other_header = header.append('foo','23');
console.log(header.get('foo')); // output null
console.log(other_header.get('foo')) // output 23

У нас есть пример:

Во-первых, неизменность данныхотправка по сети - обычная схема и на других платформах - одним из примеров является клиент OkHttp в мире Android / Java.

Во-вторых, отправляя данные по сети, мы пропускаем их через границунаше приложение и введите его в удаленную систему.Как только данные пересекают эту границу, они публикуются для всего мира и находятся вне нашего контроля.Случайно, нам нравятся объекты данных в нашем приложении, чтобы отразить, что будет отправлено в будущем или что было получено в прошлом.Чтобы достичь этого, нам нужны неизменные.Думайте об этом наоборот: когда запрос был отправлен и тело запроса было сериализовано, и после этого мы изменили бы объект тела запроса, тогда данные, локально хранящиеся на клиенте, расходятся с данными, отправленными на удаленный сервер.Это - в какой-то момент - окажется причиной глупых и предотвратимых ошибок.

Я не нашел документации или разговоров с авторами OkHttp, почему они выбрали неизменяемые.Тем не менее, документация Angular, к моему удивлению, довольно много говорит о выборе дизайна для неизменяемых!

...