Как я могу получить код ответа в угловых 7 - PullRequest
1 голос
/ 08 мая 2019

У меня есть следующий код в приложении 7 angular 7

insertAccount(submittedAccount:Account):Observable<Account>{
    return this.http.post<Account>(this.baseApiUrl+"Account",submittedAccount,this.httpNormalOptions).pipe(
      map(response=>{
        return response;
      }
    ))
   }

Как получить код ответа http?Например, если он возвращает ошибку 401, мне нужно ее обработать, и в настоящее время она, очевидно, просто возвращает объект.

---- Обновление ----

Хорошо, поэтому я следовал решениямниже, но метод карты никогда не был достигнут, так как не было ответа как такового (я полагаю, потому что это не удалось из-за 401)

Так что я изменил его на следующий

let result:Account[]=[];
    this.http.get<HttpResponse<Account[]>>(this.baseApiUrl+"Account",this.httpNormalOptions).pipe(map(
      response=>{
       return response;
      }
    )).subscribe(r=>{result= r.body},p=>{if(p.status===401){this.clearToken()}})

    return result;

Однакоочевидно, теперь не возвращает наблюдаемое ... Это проблема?(Я довольно плохо знаком с наблюдаемыми). Есть ли преимущество в возвращении наблюдаемого по сравнению с простым возвратом объекта Account []?

Просто для полноты я строю заголовки, которые отправляю с ответом следующим образом

this.httpNormalOptions = {
        headers: new HttpHeaders({
          'Content-Type': 'application/json',
          'Authorization': 'Bearer ' + this.auth_token,
          observe:'response'
        })
      }

1 Ответ

2 голосов
/ 08 мая 2019

Вам необходимо сообщить Angular, что вы хотите получить полный ответ с опцией observe: 'response', это даст вам доступ к заголовкам и коду статуса:

this.http.post<Account>(url, { observe: 'response' }).pipe(
    map(response => response.headers['status'])
)

Ответ будет иметь тип HttpResponse<Account>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...