Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Retornando notícias em JSON

Eu estou utilizando o projeto final do alurapic desenvolvido no curso. E queria fazer uma rota que retorne todas as fotos em JSON na pagina, para que eu possa consumir essa lista em outra aplicação.

Queria fazer algo assim: http://aluracar.herokuapp.com/

Mas estou tendo o retorno da pagina em branco, escrito Unauthorized e sem nenhuma mensagem de erro no console

Meu código esta assim:

routes:

module.exports = function(app) {

    var api = app.api.foto;

    app.route('/v1/fotos')
        .get(api.lista);
}

api:

var mongoose = require('mongoose');

module.exports = function(app) {

    var api = {};

    var model = mongoose.model('Foto');

    api.lista = function(req, res) {

        model.find()
        .then(function(fotos) {
            res.json(fotos);
        }, function(error) {
            console.log(error);
            res.sendStatus(500);
        });

    };

    return api;
};

O que esta de errad no meu api.lista?

9 respostas

A palavra "Unauthorized" em português significa "não autorizado". Agora, com o significado em português, fica claro que o problema é que sua rota requer autenticação e você a esta acessando sem se autenticar.

Foi a primeira coisa que pensei, mas eu consigo acessar as outras rotas sem problema. Eu faço login no sistema, navego nas paginas normalmente, mas quando digito /v1/fotos eu recebo esse erro.

Eu não criei nenhum link que vai até essa pagina, eu estou digitando ela direto no navegador. Isso pode ser um problema? Meu token pode esta se perdendo quando eu acesso essa URL

solução!

Se você acessa direto pelo navegador /v1/fotos nenhum token será enviado. Isso é o comportamento esperado, já que o endereço é um endereço protegido. Você só conseguirá acessa-lo depois de se autenticar e apenas pela própria aplicação angular. Se você, mesmo autenticado, tentar acessar direto o endereço do server digitando a URL do navegador, não vai funcionar, porque você não tem o token. O token é enviado pelo Angular a cada requisição depois que é recebido.

Ou você protege ou não protege esse endereço.

Então e isso mesmo, mas eu quero utilizar essa URL para sar como API. Vou colocar meu aplicativo em ionic consumir essa URL.

Então como vou fazer? Teria que retirar a autenticação dessa URL?

Rafael, permita-me uma observação.

Se você esta começando a desenvolver aplicações Web e começou por single page applications (SPA) terá muita dificuldade em compreender como esse tipo de aplicação funciona.

SPA são muito mais complexas de se implementarem do que uma aplicação web tradicional, além de demandar um conhecimento sênior de JavaScript, porque grande parte das coisas acontecem no browser.

Se você já tem experiência prévia em criar aplicações web, ignore o que eu disse. Se não, seria legal você rever devido a complexidade e os detalhes que o deve deve saber ao criar Single Page Applications.

Sim, tira a autenticação.

Trabalho com Java Web(SpringMVC) a 1 ano, estou começando agora com SPA e Mobile.

Outra solução é implementar autenticação na sua aplicação IONIC, mas ai sai um pouco do escopo do MEAN e cai mais para o lado do treinamento de IONIC.

Eu fiz o curso de Ionic 1 Parte 1, eu vi na descrição do Ionic 1 Parte 2 que tem alguma coisa sobre autenticação, mas vou esperar um pouco para dar continuidade no IONCI. Obrigado pelas dicas