pessoal pq teve que passar o autor para string? quando recebe a requesiçao do http ja nao vem como texto?
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.