JavaScript - Angular 4: aunar dos peticiones en una sola

 
Vista:
sin imagen de perfil
Val: 19
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Angular 4: aunar dos peticiones en una sola

Publicado por miguelz (1 intervención) el 13/09/2018 19:18:25
Hola, no necesitas dos variables de respuesta , la validacion de http response es inerente a una llamada en tu api.

var myStatus = response.status;
el objeto response tambien contiene la variable de tu respuesta

lo que pudes hacer es usar un simulador de llamadas hptt

1
http://jasonwatmore.com/post/2018/06/22/angular-6-mock-backend-example-for-backendless-development


saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar