如何修改对接口的http响应?

时间:2019-07-11 08:59:59

标签: rxjs observable angular8

我有一个界面:

export interface Device {
  id: string;
  name: string
}

然后我用额外的数据模拟http响应:

import { Injectable } from '@angular/core';
import { Device } from './device.model';
import { Observable, timer } from 'rxjs';
import { mapTo } from 'rxjs/operators';
const devices = [
  {
    id: '1',
    name: 'device1',
    serial: 'fdfd'

  },
  {
    id: '2',
    name: 'device2',
    serial: 'fdfd'
  },
];
@Injectable({
  providedIn: 'root'
})
export class DevicesDataService {

  constructor() { }
  getDevices(): Observable<Array<Device>> {
    return timer(200).pipe(mapTo(devices));
  }
}

问题是,返回的是带有3个字段的响应。

如何返回与接口匹配的响应,所以Observable<Array<Device>>仅包含2个字段?

我想调用getDevices()方法,并且只能通过具有id,name字段的设备对象数组进行观察。

1 个答案:

答案 0 :(得分:1)

恐怕您将不得不手动操作。

getDevices(): Observable<Array<Device>> {
    return timer(200).pipe(mapTo(devices),
    map(arr=>arr.map(({name,id})=>({name,id})));
  }