Я звоню в службу RESTful, в которой возвращаемые данные содержат много полей, но я хочу, чтобы интерфейс типа DTO содержал только те данные, которые мне нужны.Я использовал pipe & map из rxjs, но я не знаю, является ли это лучшей практикой или нет:
Возвращенные данные обычно:
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{...}
]
Данные мне нужны только:
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz"
},
{...}
]
Интерфейс пользователя:
export interface User {
id?:number,
name?:string,
email?:string,
username?:string
}
Служба пользователя:
export class UsersService {
constructor(private http: HttpClient) {}
getAllUsers(): Observable<User[]> {
return this.http.get<User[]>("https://jsonplaceholder.typicode.com/users")
.pipe(
map((data: User[]) =>
data.map((item: User) => {
return {
id: item.id,
name: item.name,
email: item.email,
username: item.username,
};
})
)
);
}
}