Для дальнейшего использования, попробуйте вставить соответствующий код сюда, чтобы другие пользователи могли видеть, что вы пытаетесь сделать.Ваш соответствующий код - ваш catalogue.service.ts:
export class CatalogueService {
requestOptions: any;
constructor(public http: HttpClient) {
const headers = new HttpHeaders({
'Content-Type': 'text/plain; charset=utf-8'
});
this.requestOptions = { headers: headers, observe: 'response' };
}
getColors() {
return this.http.get('http://localhost:8080/getColors', this.requestOptions).pipe(map(response => response['body']));
}
getBrands() {
return this.http.get('http://localhost:8080/getBrands', this.requestOptions).pipe(map(response => response['body']));
}
getSizes() {
return this.http.get('http://localhost:8080/getSizes', this.requestOptions).pipe(map(response => response['body']));
}
getFruits() {
return this.http.get('http://localhost:8080/getFruits', this.requestOptions).pipe(map(response => response['body']));
}
}
В частности, поскольку вы уже правильно соблюдаете response
, вы можете просто проверить тип ответа:
this.http.get('http://localhost:8080/getColors', this.requestOptions)
.pipe(
map(response => !response.ok ?
throw new Error('Request error, reponse code: ' + response.status :
response['body'])
);
Обратите внимание, что добавление Error в map
приведет к наблюдаемой ошибке, и вы можете справиться с ней в своем коде, который вызывает запрос следующим образом:
this.service.getColors().pipe(
catchError((error) => /* do something with that error */
);
Все, что сказаноВы попросили лучшие практики , связанные с этим.В этом случае я рекомендую просмотреть Перехватчики Http , если вы хотите обрабатывать все ответы Http аналогичным образом (например, регистрировать их где-нибудь или показывать подсказку, информирующую пользователя о сбое запроса и т. Д.).Перехватчики позволяют создавать поведение на уровне модуля или даже на уровне приложения для всех ответов, вызываемых из модуля / приложения.