Angular Обработка HTTP API - PullRequest
       10

Angular Обработка HTTP API

0 голосов
/ 23 апреля 2020

У меня есть несколько вопросов относительно Angular HTTP и Back-end API 1. У меня есть API, который возвращает ответ, такой как

{
    "success": true,
    "data": [
    ],
    "message": ""
}

и Angular служба обрабатывает HTTP как Observable, который представляет собой потоки данных, но это не похоже на поток.

2.Если я хочу строго типизировать, как я могу это сделать?

является ли этот правильный метод для того, чтобы принять и отобразить его как строго типизированный с помощью

 .pipe(
       map((data: DataType[]) => {
         return data;
       }) 

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020
  1. В большинстве случаев возвращаемые наблюдаемые завершаются после предоставления вам значения (ответа). Они могут быть переданы оператору last или асинхронными методами c, на них удобно использовать .toPromise().

  2. Строго набирается:

Сами методы http являются обобщенными c, поэтому вы можете сделать что-то вроде:

this.http.get<MyClass>(url);

Дополнительный совет: они являются холодными наблюдаемыми, то есть на самом деле они не будут выполнять запрос до тех пор, пока это подписчик. Так что-то вроде этого:

this.http.post(url,data);

Ничего не сделаю!

0 голосов
/ 23 апреля 2020

Если вы используете generi c версию вызова HTTP API (например, get), вы можете включить члены типа (или определить интерфейс и использовать его). Затем с этого момента вы получаете безопасность типов.

someServiceCall: Observable<Array<any>> {
  return this.httpClient.get<{"success":boolean; "data":Array<any>; "message":string}>('/some/api/end/point')
         .pipe(map(response) => response.data);
}

Дополнительно

  • Вам также следует заменить пользователя any на соответствующий тип
  • In в вашем коде обработчик map имеет массив DataType экземпляров, но ваш json не является массивом, это объект, который содержит массив в качестве одного из полей.
  • Не уверен, что у вас есть контроль источника конечной точки API, но если у вас есть: Не включайте успех / неудачу как часть возвращаемых данных. Вместо этого используйте соответствующие коды состояния. Если API успешен, то возвращаемое состояние будет 200 (или в диапазоне от 200 до 299 в зависимости от типа результата). Если произошла ошибка, верните код состояния http (например, 400 или 404 или 401 или 500 et c) и дополнительную информацию, если необходимо.
...