Я всегда использовал для получения HTTP-ответа с объектом TypeScript.
validateTokenHttp(token: string): Observable<User> {
return this.http.get<User>(`${environment.api}/auth/verifyToken/${token}`);
}
Иногда он возвращает User
объект или Account Not Verified
или Account Not Valid
или Account is __some resonse__
.
Вопрос в том, как лучше всего справиться с этим?
Возможности, которые я рассмотрел:
Отправить ответ с кодом состояния 401
или другими,
this.validateTokenHttp(token)
.subscribe(
(user) => {
// do success operation
},
(error) => {
if(error.status == 401){
console.log(error.error); // do the exception
}
}
);
ПРИМЕЧАНИЕ: В этом случае мы говорим код состояния 401
, на самом деле мы можем иметь несколько различных проверка на сервере, который не соответствует коду состояния 401
.
Отправлять ошибки проверки в ответе HTTP с кодом состояния 200
validateTokenHttp(token: string): Observable<any> {
return this.http.get<any>(`${environment.api}/auth/verifyToken/${token}`);
}
getUser(){
this.validateTokenHttp(token)
.subscribe(data=>{
if(data.success == true){
//do success operation
}
else{
//do the exception operation
}
});
}
Ответ 1
//Status Code: 200
{success: true, data: "--User details JSON object"}
Ответ 2
//Status Code: 200
{success: false, message: "Account Not Verified"}
Но если мы go для решения 2 необходимо изменить тип возврата validateTokenHttp(token: string): Observable<User>
на validateTokenHttp(token: string): Observable<any>
. Я думаю, что использование <any>
объекта не может быть хорошим.
Есть ли способ предсказать два объекта? Observable<User || CustomErrorObject>
Есть ли какой-нибудь способ убедиться, что мы получили User
объект?
Кто-нибудь может сказать мне, как лучше всего обрабатывать такого рода проверки / ответы сервера?