У меня есть приложение, которое, когда пользователь входит в систему, получает в ответ некоторые данные, но если ответ не соответствует ожиданиям, приложение вылетает.
Позвольте мне показать вам следующее:
Я создал интерфейс, чтобы сообщить Typescript ожидаемые данные.
export interface AuthResponseData {
token: string;
expires: string;
role: number;
}
Затем я создал метод для отправки данных для входа на сервер.
login(user: string, password: string){
return this.http.post<AuthResponseData>(
'https://localhost:44344/api/auth', { user: user, pwd: password }
).pipe(
catchError(this.handleError),
tap(resData => { this.handleAuthentication(resData.token, resData.expires, resData.role)})
);
}
Я был ожидая, что если ответ от сервера не будет соответствовать интерфейсу, Angular будет перенаправлен на catchError
. Но не бывает
Теперь мой вопрос : есть ли способ проверить, равен ли ответ API интерфейсу, и выдать ошибку, если нет. Или то, что я спрашиваю, невозможно?
ОБНОВЛЕНИЕ:
После поиска я обнаружил, что интерфейсы исчезают во время выполнения, поэтому нет никакого способа сравнить ответ API с интерфейсом (насколько мне известно). Но я продолжаю искать способ проверить ответ API динамически c. Я думаю, что это не совсем безопасно, в зависимости от ответа API, чтобы быть всегда правильным. Поэтому я должен проверить ответ API. Как я могу это сделать?
Надеюсь, вы можете мне помочь, спасибо:)