Я использую Angular 8.2 и вызываю API-интерфейс. NET Core 3.1, и я могу заставить вызов работать и возвращать данные, которые мне нужны, но синтаксис, который я в итоге использовал, выглядит так можно было бы упростить, но пока никакие альтернативы, которые я пробовал, похоже, не работают.
Я вызываю API следующим образом:
getCatsApi(): Observable<any[] | DataServiceError> {
console.log("API");
let mcats = this._http.get<any[]>( Settings.apiRoot + 'api/Cat/GetCats')
.pipe(
catchError(err => this.handleHttpError(err))
)
console.log("Get Cats from API");
console.log(mcats);
return mcats;
}
Это возвращает структуру ответа, которая выглядит как это:
Данные, которые мне нужны, находятся в свойстве «ReturnEntity», чуть ниже свойства «responseErrors».
I Я могу получить эти данные беспорядочным способом:
getCats(){
this._dataService.getCatsApi().subscribe(data => {
for(let j = 0; j < data['returnedEntity']['catList'].length; j++) {
console.log(data['returnedEntity']['catList'][j]);
this.catsObj.push(data['returnedEntity']['catList'][j]);
}
});
}
Это работает, и я получаю нужные мне данные. Но похоже, что должен быть лучший способ вернуть возвращенный объект без явной ссылки на него со строками массива. Я использую <any[]>
в исходном HTTP-вызове, но если я изменю его на интерфейс <Category[]>
, который я создал, это, похоже, не изменит ситуацию. Я предполагаю, что мне нужно использовать некоторую форму функции rx js .map (), но пока я не нашел способа заставить это работать. Это заставляет меня задуматься, а что-то еще не так? Приветствуются любые мысли! Спасибо!