Hacer Peticion HTTP por Post en IONIC 3

publicado por: Anonymous

alguien sabría como hacer una peticion por POST, pasando un valor por header y dos parametros, yo lo estoy haci

data = {
'nombre_usuario' : 'josejoserra',
'password' : '1234'};

return new Promise((resolve, reject) => {
  this.http.post(this.apiUrl+'/socio/login', data,{
    headers: new HttpHeaders().set('api-key', 'apikey'),
  })
    .subscribe(res => {
      resolve(res);
    }, (err) => {
      reject(err);
    });
});

solución

Primero que nada lo que estamos usando es Angular +2 o TypeScript, Aqui te dejo un ejemplo de un post en Angular usando Observables.

Hay que poner mucha atencion en la forma en que enviamos el token al api, ya que hay ocaciones en que espera el token acompañado de alguna palabra como en el caso de JWT donde es comun acompañarlo de la palabra “Bearer”:

import {Injectable} from '@angular/core';
import {Http, Headers, Response} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

@Injectable()
export class MiProvider {

  constructor(public http: Http) {
  }

  /** metodo para guardar con observable */
  save(data): Observable<any> {
    // creamos las cabeceras
    let headers = new Headers();
    // establecemos el token de autenticacion
    headers.append('Authorization', 'Bearer ' + JSON.parse(localStorage.getItem('userData')).auth_token);
    // establecemos el contenido de la peticion
    headers.append('Content-Type', 'application/json');
    // peticion de tipo POST (Host destino, ruta, pasamos json con datos del post, cabeceras)
    return this.http.post(this.constants.getHost() + "/socio/login", JSON.stringify(data), {headers})
      // aqui estraemos lod datos para procesarlos despues con angular
      .map(this.extractData)
      // en caso de algun problema aqui se extrael el mensaje
      .catch((e) => {
        return Observable.throw(e.json().status || e.json().errors || 'Server error');
    });
  }

  /** procesamos la respuesta del api
   * @param {Response} response data from http request.
   */
  private extractData(res: Response) {
    let body = res.json();
    return body || {};
  }
}

Espero te sea de ayuda para resolver tu problema, saludos.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *