Angular 4: aunar dos peticiones en una sola
Publicado por Laura (10 intervenciones) el 06/09/2018 18:21:28
Estoy realizando una petición a una api fake con la finalidad de mostrar un array (get). Eso sí, necesito sacar el dato del status (code) de la petición para que los resultados varíen en función de si todo es correcto (status 200) o algo está fallando. Por este motivo, por un lado creo una variable en la que poder acceder tanto a ese status (data2) como a la data que estaré imprimiendo por pantalla (data1) y, por otro lado, le pido que me devuelva esta respuesta mapeada:
De este modo, ya puedo hacer las validaciones que buscaba en el componente que está usando este servicio:
Espero que me haya explicado correctamente... ¿Alguna idea?
¡Como siempre, gracias por adelantado!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
getMiembrosDireccion(){
/* creo una variable (datayestatus) ya que he podido comprobar que la respuesta que me devuelve esta petición es el
array de photos (con sus id, url...) pero no contiene el status de la petición, por lo que debo averiguarla aparte.
datayestatus guarda en primer lugar este array de photos: ¿Cómo averigüé que la data se guarda dentro de _body?
http.get('/path/to/resource')
.subscribe((res:Response) => {
console.log(res.headers);
// you can assign the value to any variable here
});
Este código está sacado de https://stackoverflow.com/questions/44292270/angular-4-get-headers-from-api-response
*/
var datayestatus = { data1 : '', data2 : '' };
this._http.get('https://jsonplaceholder.typicode.com/photos')
.subscribe(
(res:Response) => {
datayestatus.data1 = JSON.parse(res._body);
datayestatus.data2 = res.status;
}
);
return this._http.get(this.url+'/photos').pipe(map( res => datayestatus ) );
}
De este modo, ya puedo hacer las validaciones que buscaba en el componente que está usando este servicio:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ngOnInit(){
//console.log('DireccionComponent se ha cargado correctamente.');
this._direccionService.getMiembrosDireccion().subscribe(
result => {
console.log(result);
if(result.data2 != 200){
console.log(result);
console.log("Es distinto de 200. ");
}
else{
console.log("Es 200. ");
this.miembrodireccion = result.data1;}
},
error => { console.log(<any>error); }
);
console.log(this.miembrodireccion);
}
Espero que me haya explicado correctamente... ¿Alguna idea?
¡Como siempre, gracias por adelantado!
Valora esta pregunta


0