Каков наиболее профессиональный способ обработки ответа API с использованием классов TypeScript, JavaScript, Java или чего-то еще?
Например, приложению нужно три ресурса:
Каждый Счет имеет один или несколько Машина, каждый Машина имеет один или несколько Водитель.
Я вижу два способа обработки этих ресурсов в моем приложении:
Создайте класс для каждого ресурса (Учетная запись, Автомобиль, Водитель) и вложи это. Например.
class Account {
constructor(
public id: number,
public name: string,
public age: number
public cars: Car[]
) {}
}
class Car {
constructor(
public id: number,
public type: string,
public seats: number
public drivers: Driver[]
) {}
}
В этом случае API вернет уже вложенный ответ JSON, и потребуется только один раз запросить данные.
Создайте класс для каждого ресурса но не вкладывай это. Сначала получите только данные учетной записи (звонки / account / 1234), затем сведения о драйверах, если это необходимо, и автомобилях, если это необходимо, в конце жизненного цикла приложения.
class Account {
constructor(
public id: number,
public name: string,
public age: number
) {}
}
class Car {
constructor(
public id: number,
public type: string,
public seats: number
) {}
}
В этом случае API будет возвращать для каждого вызова API только основные данные ресурса.
Итак, должны ли ресурсы всегда быть вложенными по всему приложению и вызывать только один раз, или классы ресурсов должны существовать и перезагружаться независимо друг от друга в приложении? Какой способ используют профессиональные программисты?
Содержание вашего вопроса не имеет ничего общего с организацией классов Angular. Вы спрашиваете о дизайне API; ваши классы / интерфейсы DTO в Angular должны отражать то, что вы получаете от бэкэнда.
Это слишком неоднозначно. При проектировании вы также должны учитывать, как вы хотите использовать данные и насколько большими могут быть наборы данных в одном обращении. Вложенность подходит для небольших наборов данных, но вы не захотите делать это таким образом, если наборы данных всегда большие (подумайте о сетевом трафике, а затем умножьте на количество пользователей, которые, вероятно, будут использовать ваш сайт).
Это всего лишь мнение. Мне нравится, что тяжелая работа выполняется на сервере (а не на клиенте), поэтому моим первым подходом будет возвращение вложенных классов API. Но вам может потребоваться в вашем приложении видеть все автомобили или всех водителей. В зависимости от размера данных будет иметься служба, в которую вложены классы. Ну, мы говорим о классах (используйте интерфейс, потому что вам не нужен метод объекта, а только данные)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Из руководства по стилю Angular
Consider using an interface for data models
Angular 4.3 представил новый более простой способ обработки запросов http с помощью библиотеки HttpClient.
You can tell
HttpClientthe type of the response to make consuming the output easier and more obvious. All you need to do is define an interface for the shape of the response and type-check against that interface:
interface Post {
title: string;
body: string;
};
// ...
constructor(private http: HttpClient) {}
getData() {
this.http.get<Post>(this.url).subscribe(res => {
this.postTitle = res.title;
});
}
So should resources always be nested over the complete application and called up only at one time, or should the resource classes exist and be reloaded independently of each other in the application? Which way is used by professional programmers?
Это полностью зависит от вашего варианта использования
Зачем вообще нужно создавать классы? Какое поведение вы намереваетесь добавить к ним? Если вы не собираетесь добавлять методы, классы на самом деле не нужны; вам лучше определить интерфейсы TypeScript для ресурсов.