Quantcast
Channel: Problema realizando peticiones a una api rest desde angular 5 - Stack Overflow en español
Viewing all articles
Browse latest Browse all 2

Problema realizando peticiones a una api rest desde angular 5

$
0
0

tengo una api rest que pruebo desde el postman y obtengo respuesta sin problemas.

"content": [    {"username": "john.doe","password": "$2a$10$l1uYkX5AX3pul86A3O5mgujwff6dYDCepixCGwyMjslWP3frCoSpi","firstName": "John","lastName": "Doe","email": "oscar.toledo@gmail.com","phone": "+53582424","address": "","active": true,"fullName": "JohnDoe","blocked": false    },    {"username": "admin.admin","password": "$2a$10$l1uYkX5AX3pul86A3O5mgujwff6dYDCepixCGwyMjslWP3frCoSpi","firstName": "Admin","lastName": "Admin","email": "oscar.toledo1@gmail.com","phone": "+53582424","address": "","active": true,"fullName": "AdminAdmin","blocked": false    }],"last": true,"totalElements": 2,

Esta petición tiene como cabecera un token como parte de la autenticación que tiene implementada. Ahora desde mi app angular consumo el token a la hora de el logeo y no tiene problemas , funciona bien , el problema está cuando intento obtener la lista de los usuarios que debe devolver el json que mostré anteriormente.

Este es el código en angular

Este es el servicio

import { Injectable } from '@angular/core';import {HttpClient, HttpHeaders}from '@angular/common/http';import {Observable} from 'rxjs/Observable';import { User } from '../model/user';import {HttpModule, Http, Response}from '@angular/http';import 'rxjs/add/observable/throw';import 'rxjs/add/operator/catch';import 'rxjs/add/operator/map';const cudOptions = {headers: new HttpHeaders({'Content-Type': 'application/json'})}@Injectable()export class UserServiceService {  private usersUrl: string = 'http://localhost:8080/pineapple-admin-core/users/list';  private userUrl: string = 'http://localhost:8080/pineapple-admin-core/users/get';  private userAdd: string = 'http://localhost:8080/pineapple-admin-core/users/add';  private userDelete: string = 'http://localhost:8080/pineapple-admin-core/users/delete';   private userUpdate: string = 'http://localhost:8080/pineapple-admin-core/users/update';  private loginUrl = "http://localhost:8080/pineapple-admin-core/oauth/token";  constructor(private http: HttpClient) { } getUsers(): Observable<User>{    return this.http.get<User>(this.usersUrl, {headers : new HttpHeaders({'Authorization' : 'Bearer '+localStorage.getItem('userToken')})})          .catch(this.handleError); }    getUser(id: string|number): Observable<User>{   const url = `${this.userUrl}/${id}`;   return this.http.get<User>(this.userUrl).catch(this.handleError);  }   addUser(user: User): Observable<User>{    const newUser = Object.assign({}, user);     return this.http.post<User>(this.userAdd, newUser, cudOptions)           .catch(this.handleError);  }  deleteUser(user: User|number){  const id = typeof user === 'number' ? user : user.id;  const url = `${this.userDelete}/${id}`;  return this.http.delete(url,cudOptions)          .catch(this.handleError); }   updateUser(user : User): Observable<User>{     return this.http.put(this.userUpdate, user, cudOptions)       .catch(this.handleError);  }  userAuthentication(userName: string, password: string){    var data = "grant_type=password&username="+userName+"&password="+password; let headers : HttpHeaders = new HttpHeaders();   headers = headers.append('Content-Type',  'application/x-www-form-urlencoded');   headers = headers.append('Authorization', 'Basic b25lbW9yZWNsaWVudGlkOlhZN2ttem9OemwxMDA=');    return this.http.post(this.loginUrl, data, {headers: headers}).catch(this.handleError);}  private handleError(error: any){console.error(error);    return Observable.throw(error);   } }

Este es el component.ts

import { Component, OnInit } from '@angular/core';import { User } from '../../model/user';import { Router } from '@angular/router';import { UserServiceService } from '../../services/user-service.service';import { Observable } from 'rxjs';import { HttpErrorResponse } from '@angular/common/http';@Component({  selector: 'app-user-crud',  templateUrl: './user-crud.component.html',  styleUrls: ['./user-crud.component.css']})export class UserCrudComponent implements OnInit { private users: any[];  constructor(private router: Router, private userService: UserServiceService) { }  ngOnInit() {    this.getUsers(); }  getUsers() {     this.userService.getUsers().subscribe((data : any) => {     console.log(data.content);    },(err : HttpErrorResponse)=>{      console.log(err);   });  }

y este es el html

<table><thead><tr><td>Columna 1</td><td>Columna 2</td><td>Columna 3</td></tr></thead><tbody><tr *ngFor="let item of users"><td>{{ item.id }}</td><td>{{ item.lastname }}</td><td>{{ item.firstname }}</td></tr></tbody>

Necesito poder consumir el servicio y mostrar la lista de usuarios visualmente porque cuando entro en el navegador y cargo la pagina no me muestra nada y en la consola se me imprime el siguiente error.

zone.js:2935 OPTIONS http://localhost:8080/pineapple-admin-core/users/list 401 (No Autorizado)usercrud:1 Failed to load http://localhost:8080/pineapple-admin-core/users/list: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 401.

Muchas gracias por su ayuda de antemano


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images