Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Consumir API REST com projeto angulaJS

Ola, tudo bem?

Criei 2 aplicações. Um projeto em angularJS e outro projeto separado em nodeJS para ser consumido igual o conteúdo deste curso. O problema é que quando o projeto em angular tenta consumir um endpoint do projeto node API REST da o seguinte erro no console:

XMLHttpRequest cannot load http://localhost:3000/students/listAll. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. studentsController.js:14 Retorno: null

Segue o código do controller do projeto angular:

angular.module('socialLibrary').controller('studentsController', function($scope, $http){

          $scope.message = 'Lista de alunos';
        var urlBackEnd = "http://localhost:3000";

        var students = [];

        $http.get(urlBackEnd+'/students/listAll')
        .success(function(data){
            console.log("Retorno: " + data);
            $scope.students = data;
        })
        .error(function(error){
          console.log("Retorno: " + error);
        });


});

Quando acesso a rota da aplicação node API REST, é apresentado no navegador o array de objetos json corretamente. Segue o código do controller do projeto node:

module.exports = function(app) {

    app.get('/students/listAll', function(req, res){

        console.log("--> entrando na rota de lista geral de estudantes.");

        //*** Estabelecando conexao 
        var connection = app.models.connectionFactory();    
        var studentDao = new app.models.StudentsDao(connection);

        studentDao.listAll(function(error, results){
            if(error){
                console.log("--> Deu erro aqui: " + error);
                res.status(500).send(error);
                return;
            }else{
                res.json(results);
            }
        });
    });
}

Devo separar os projetos como estou fazendo ou deixá-los no mesmo projeto? O que é mais indicado?

1 resposta
solução!

Opa, vc precisa habilitar o cors no projeto da api => https://github.com/expressjs/cors