2
respostas

Só retorna HTML

Olá,

Estou tentando fazer com que a resposta do servidor me entregue o Json, mas só vem HTML.

Meu codigo é:

clienteAndroid.js:

var http = require('http');

var config = {
  hostname: 'localhost',
  port:3000,
  path:'/produtos',
  headers:{
    'Accept':'application/json'
  }
};

http.get(config, function(res) {
  console.log(res.statusCode);
  res.on('data', function(body) {
    console.log('corpo:'+body);
  });
});

produtos.js

module.exports = function(app){

  //lista produtos
  app.get('/produtos', function(req,res) {
    var connection = app.infra.dbConnection();
    var produtosDAO = new app.infra.ProdutosDAO(connection);
    produtosDAO.lista(function(err, result) {

      res.format({
        html: function() {
          res.render('produtos/lista', {lista:result});
        },
        json: function() {
          res.json(result);
        }
      });

    });
    connection.end();
  });


  app.get('/produtos/form', function(req,res) {
    res.render('produtos/form');
  });

  //Dados enviados como json
  app.get('/produtos/json', function(req,res) {
    var connection = app.infra.dbConnection();
    var produtosDAO = new app.infra.ProdutosDAO(connection);
    produtosDAO.lista(function(err, result) {
      res.json(result);
    });
    connection.end();
  });


  //inserir produtos
  app.post('/produtos', function(req,res) {

    var produto = req.body;
    var connection = app.infra.dbConnection();
    var produtosDAO = new app.infra.ProdutosDAO(connection);

    produtosDAO.salva(produto, function(error,result) {
      res.redirect('/produtos');
    });

  });

  //deletar produtos
  app.post('/produtos', function(req,res) {

    var produto = req.body;
    var connection = app.infra.dbConnection();
    var produtosDAO = new app.infra.ProdutosDAO(connection);

    produtosDAO.deleta(produto, function(error,result) {
      res.redirect('/produtos');
    });

  });


};
2 respostas

Vou ser sincero, não vi o erro :/. Quando vc coloca o console.log, ele cai no case do html? Tem como subir o código no github e disponibilizar o link aqui?

Olá Andre, conforme o video ele tira a variável criada em aulas anteriores para chamada dos produtos, eu não fiz a alteração conforme o video e mantive, funcinou sem erro, vou postar aqui para vc ver, acredito que bastaria vc fazer as alterações das declarações de váriaveis e vai dar certo:

cliente-androido.js

var http = require('http');

var configuracoes = {
    hostname: 'localhost',
    port:3000,
    path: '/produtos', 
    headers:{
    'Accept':'application/json',
    // o de baixo vai ser apenas html troca os comentários para ver
        //'Accept':'text/html',
    }
};

http.get(configuracoes,function(res){
    console.log(res.statusCode);
    res.on('data',function(body){
        console.log('Corpo'+body);
    });
});

produtos.js

module.exports = function(app){
    var listaProdutos = function(req, res){
    var connection = app.infra.connectionFactory();
    var produtosDAO = new app.infra.ProdutosDAO(connection);
    produtosDAO.lista(function(erros,resultados){
        res.format({
            html: function(){
                res.render('produtos/lista',{lista:resultados});
            },
            json: function(){
                res.json(resultados)
            }
        });

    });
    connection.end();
        };

    app.get('/produtos',listaProdutos);

    app.get('/produtos/form', function(req, res){
        res.render('produtos/form');
    });

    app.post('/produtos', function(req, res){
        var produtos = req.body;

        console.log(produtos);

        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.salva(produtos,function(erros,resultados){
            console.log(erros);
            listaProdutos(req, res);
        });
    });

}

Depois conte ai se deu certo.