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

Dúvida - Vídeo 1 - 4. Content negotiation

Quando criamos o client-android para fazer teste chamada rest, esse foi o código:

var http = require('http');

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

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

A minha dúvida é a seguinte, mesmo eu usando o headers com 'Accept':'application/json', quando executa http.get, na linha console.log('teste: '+body), se eu não concatenar qualquer string com o body, (console.log(body)) o resultado vem:

<Buffer 5b 7b 22 63 6f 64 4c 69 76 72 6f 22 3a 31 2c 22 6e 6f 6d 65 22 3a 22 55 73 61 62 69 6c 69 64 61 64 65 20 6e 61 20 57 65 62 22 2c 22 64 65 73 63 72 69 ... >

como se ele estivesse ignorando o cabeçalho?!?!?

Mas quando eu faço o console.log('teste: '+body), retorna :

teste: [{"codLivro":1,"nome":"Usabilidade na Web","descricao":"Projetando web sites com qualidade.","isbn":"978-85-352-2190-9","preco":120},{"codLivro":2,"nome":"O guia para projetar UX","descricao":"A experiência do usuário (UX) para projetistas de conteúdo digital, aplicações e web sites.","isbn":"978-85-352-2190-9","preco":50},{"codLivro":3,"nome":"HTML 5","descricao":"A linguagem de marcação que revolucionou a web.","isbn":"978-85-352-2190-9","preco":80.5},{"codLivro":4,"nome":"Smashing WordPress","descricao":"Além do Blog","isbn":"978-85-352-2190-9","preco":80},{"codLivro":7,"nome":"Node.JS","descricao":"Construindo aplicações com Node.JS","isbn":"978-85-7522-456-4","preco":56.9},{"codLivro":8,"nome":"Node.JS","descricao":"asdf","isbn":"31-6548-5468","preco":180},{"codLivro":9,"nome":"Node.JS","descricao":"adsf","isbn":"2344234","preco":1233}]

Porque isso acontece???

1 resposta
solução!

O body é um objeto do tipo Buffer. Pra ter o resultado final, vc precisa chamar o toString nele. Isso é feito automaticamente se vc concatena com outra String.

Senão, basta fazer console.log(body.toString())