pessoal pq teve que passar o autor para string? quando recebe a requesiçao do http ja nao vem como texto?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
pessoal pq teve que passar o autor para string? quando recebe a requesiçao do http ja nao vem como texto?
Fala ai Luan, tudo bem? Foi necessário utilizar o stringify para transformar o objeto JavaScript em texto, isso é necessário pois em alguns momentos pode ser que seu back não esteja preparado para receber um objeto JSON direto.
E as informações que trafegamos na rede são enviadas via texto e não objeto, sendo assim, quando esse texto chegar na API a mesma será responsável por convertê-lo de volta para um objeto.
Espero ter ajudado.
fala ae maheus beleza?
escutadorDeSubmit = autor => {
ApiService.criaAutor(JSON.stringify(autor))
.then(resp=>resp.data)
.then(resp=>this.setState({ autores: [...this.state.autores, resp] })) criaAutor:(autor) =>
{
return fetch('http://localhost:8000/api/autor',{method:'POST',headers:{'content-type':'application/json'},body:autor})
.then(resp=> resp.json())
},ai estao a chamada do metodo e a criaçao dele, quando chamo e convertido para string, mas la no fet e convertido para json?
mas quando trafego dados pelo http ja nao vem como texto? pq devo converter mais uma vez ?
Fala ai Luan, vamos lá:
ai estao a chamada do metodo e a criaçao dele, quando chamo e convertido para string, mas la no fet e convertido para json?
No caso, a função criaAutor recebe objeto convertido já para string e manda essa string como body para a fetch.
mas quando trafego dados pelo http ja nao vem como texto? pq devo converter mais uma vez ?
Ele vem como texto porque as linguagens na maioria das vezes realizam e cuidam dessa abstração para a gente, por exemplo a axios, a gente passa um objeto direto para ela, mas, por baixo dos panos antes de realizar a requisição ela converte para string com o stringify.
Mas porque precisamos fazer isso? Isso porque a requisição pode receber N tipos de body, sendo eles:
Ficaria muito dificil para a engine do JavaScript lidar com essa conversão, então, a gente faz isso para deixar mais claro e menos trabalho para a engine em si.
Espero ter ajudado.
fala ae matheus ,quando pego os dados do form vem texto correto? mas mesmo assim faço esse stringfy, e por boa pratica? poderia deixar sem ele que funcionaria? outra coisa, quando faço esse apllication/json nao quer dizer que ao inves de texto , no body eu envio um json?
o que eu quis dizer foi o seguinte: pego como texto , mas devido ao application/json , esse texto e convertido pra json , e isso que ocorre?
Fala ai Luan, Vamos lá:
quando pego os dados do form vem texto correto?
Sim, os valores são string's.
mas mesmo assim faço esse stringfy, e por boa pratica?
Nesse caso o stringify foi feito porque o valor do autor é um objeto, então a gente precisa transformar esse objeto para texto, exemplo:
const autor = { nome: 'Matheus', idade: 26 }
JSON.stringify(autor) // '{"nome": "Matheus", "idade": "26" }'poderia deixar sem ele que funcionaria?
Se você deixar sem, provavelmente vai dar problema na hora de enviar esse objeto no body da requisição.
quando faço esse apllication/json nao quer dizer que ao inves de texto , no body eu envio um json?
Sim, mas, o json em si vem como texto e não já convertido para objeto, dessa maneira, quando a gente define o application/json temos uma segurança que podemos fazer o JSON.parse do body da resposta que não vai quebrar, exemplo:
// funciona
JSON.parse('{"nome": "Matheus", "idade": "26" }')
// erro
JSON.parse('Matheus')pego como texto , mas devido ao application/json , esse texto e convertido pra json , e isso que ocorre?
Não, o autor é um objeto que possui propriedades cujo seus valores são string's, mas, poderiam ser booleanas, numeros, array, outros objetos e por ai vai...
Sendo assim, a gente converte o objeto para string (texto) antes de enviar para a API.
Espero ter ajudado.
vlw matheus, entendi agora
Magina Luan, sempre que precisar não deixe de criar suas duvidas.
Abraços e bons estudos.