#angular #typescript #http-headers #httprequest
#angular #typescript #http-заголовки #httprequest
Вопрос:
Это для проекта angular 6.
Для начала я вызываю следующий метод, устанавливаю новый заголовок и выполняю запрос get:
public getExposurePageDetailByExposureId(caseId, EditMode): Observable<any> {
let headers = new HttpHeaders().set('EditMode', EditMode);
return this.httpClient.get(this.url.getExposurePageDetailByExposureIdUrl "/" caseId, {headers});
}
После обработки запроса он проходит через файл httpInterceptor.ts
. Это анализирует кучу информации о запросе.
В этом файле создается новая переменная HttpHeaders:
var authHeader = "Bearer " this._cookieService.get('userToken');
var userId = this._cookieService.get('userId') == "" ? "0": this._cookieService.get('userId');
var centreId = (this._cookieService.get('centerId') == "" || this._cookieService.get('centerId') == "null")? "0":this._cookieService.get('centerId');
var headers = new HttpHeaders({
'Authorization': authHeader,
'userId':userId,
'centreId': centreId
});
После этого я хотел бы сравнить текущие заголовки запроса с новой сформированной headers
переменной.
Идея в том, что я беру EditMode
заголовок (имя и значение) и добавляю его в headers
.
//req being the current request being processed with the EditMode header in it.
for(var hd in req.headers){
if (headers does not contain hd.headername){
//add header
headers = headers.set('hd.headername', hd.headervalue);
}
}
Как я могу сформировать этот цикл обработки?
РЕДАКТИРОВАТЬ: использование следующего приводит к ошибке:
req.headers.keys().forEach(h=> {
console.log(h);
console.log(req.headers.get(h));
})
Дальнейшее обновление:
Вышеуказанная ошибка была вызвана обработчиком ошибок, поэтому вывод не очень полезен, фактическая ошибка заключается в следующем:
По-видимому, req.headers.keys() не может быть зациклен, однако, когда я запрашиваю keys
функцию в отладчике, возвращает следующее, что она должна возвращать массив:
Во что бы то ни стало, похоже, что это должно сработать.
Есть множество других запросов, которые он обрабатывает без проблем … вероятно, потому, что ни один из них ничего не установил в ключах
Ответ №1:
Ниже приведен пример того, как это может быть реализовано:
headers1.keys().forEach(key => {
if (!headers2.has(key)) headers2.set(key, headers1.get(key))
})
Или даже короче:
headers1.keys().forEach(k => !headers2.has(k) amp;amp; headers2.set(k, headers1.get(k)))
Комментарии:
1. Привет, Рафи, я использовал forEach для
headers
переменной, и она прошла через цикл нормально, но forEach не работает дляreq.headers.keys()
. Можете ли вы придумать какую-либо причину для этого?2. Что вы имеете в виду, не работает? что это возвращает?
3. Обновленный вопрос с подробностями
4. В основном это выходит из функции typescript, не уверен, что ошибка имеет какое-либо значение
5. Могу ли я попросить вас создать простой онлайн-пример? Спасибо