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

Problema com o arquivo cadastra-livros-terminal Aula 4

Olá fiz o arquivo cafastra-livros-terminal.js com o conteúdo:

var http = require('http');

var configuracoes = {
    hostname: 'localhost',
    port:3000,
    path: '/produtos',
    method: 'post',
    headers: {
        'Accept': 'application/json',
        'Content-type': 'application/json'
    }
};

var client = http.request(configuracoes, function(res){
    console.log("Code: " + res.statusCode);
    res.on('data', function(body){
        console.log('Corpo:' +body);
    });
});

var produto = {
    titulo : 'mais sobre o node',
    descricao : 'node, javascript e um pouco de http',
    preco : 29.50
}

client.end(JSON.stringify(produto));

Inseri o body.parser no express.js

app.use(bodyParser.json());

E alterei o produtos.js

app.get('/produtos',function(req,res){
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.lista(function(err,results){
            res.format({
                html: function(){
                    res.render('produtos/lista',{lista:results});
                },
                json: function(){
                    res.json(results)
                }
            });

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

Mas o resultado que aparece quando rodo no terminal o node cadastra-livros-terminal.js é o seguinte:

Code: 404
Corpo:Cannot POST /produtos
4 respostas

Opa, pode mostrar a rota que recebe um post para /produtos?

Hum, então não tinha esse trecho! Teria que incluir no produtos.js, parecido com o app.get?

solução!

Você pode fazer o seguinte, no seu arquivo produtos.js deve existir uma rota para salvar os dados enviados pelo formulário

app.post('/produtos/salva',function(req,res){
    //Programação para salvar dados do formulário
}

Você pode tentar utilizar esta rota já existente neste arquivo do terminal. Teria que alterar apenas o arquivo de configuração

var configuracoes = {
    hostname: 'localhost',
    port:3000,
    path: '/produtos/salva',
    method: 'post',
    headers: {
        'Accept': 'application/json',
        'Content-type': 'application/json'
    }
};

Se você quiser manter exatamente a mesma rota da explicação, vai ter que criar esta rota em seu arquivo produtos.js

app.post('/produtos/',function(req,res){
    //Programação para salvar dados do formulário
}

Deu certo, obrigado Daniel! :)