1
resposta

[Dúvida] Videos não aparecem após enviar

Boa noite, fiz todos os procedimentos e quando coloco para enviar o video ele completa o processo e retorna concluído, porém, ao retornar a lista de videos o mesmo não aparece e nem a descrição e o nome. No lugar apenas as escritas "cannot GET / undefined". Detalhe, a lista db.json as informações náo aparecem e ficam vazias.

db.jason

{ "titulo": "Dark Patterns #AluraMais", "descricao": "2 mil visualizações", "url": "https://www.youtube.com/embed/nIN8J_bIZO8?feature=share", "imagem": "https://purr.objects-us-east-1.dream.io/i/OoNx6.jpg", "id": 13 }, { "id": 14 }, { "id": 15 }, { "id": 16 }, { "id": 17 }, { "id": 18 } ] }

mostrarVideos.js

import { conectaApi } from "./conectaApi.js";

const lista = document.querySelector("[data-lista]");

function constroiCard(titulo, descricao, url, imagem){ const video = document.createElement("li"); video.className = "videos__item"; video.innerHTML = `

logo canal alura

${titulo}

${descricao}

`

return video

}

async function listaVideo() { const listaApi = await conectaApi.listaVideos(); listaApi.forEach(elemento => lista.appendChild(constroiCard( elemento.titulo, elemento.descricao, elemento.url, elemento.imagem))) }

listaVideo();

conectaApi.js

async function listaVideos(){ const conexao = await fetch("http://localhost:3000/videos"); const conexaoConvertida = await conexao.json();

return conexaoConvertida;

}

async function criaVideo(titulo, descricao, url, imagem) { const conexao = await fetch("http://localhost:3000/videos", { method: "Post", headers: { "Content-type": "aplication/json" }, body: JSON.stringify({ titulo: titulo, descricao: ${descricao} mil visualizações, url: url, imagem: imagem }) }); const conexaoConvertida = await conexao.json();

return conexaoConvertida;

}

export const conectaApi = { listaVideos, criaVideo }

criarVideos.js

import { conectaApi } from "./conectaApi.js"; const formulario = document.querySelector("[data-formulario]");

async function criarVideo(evento) { evento.preventDefault();

const imagem = document.querySelector("[data-imagem").value;
const url = document.querySelector("[data-url").value;
const titulo = document.querySelector("[data-titulo").value;
const descricao =  Math.floor(Math.random() * 10).toString();

await conectaApi.criaVideo(titulo, descricao, url, imagem);

window.location.href = "../pages/envio-concluido.html";

}

formulario.addEventListener("submit", evento => criarVideo(evento));

1 resposta

Olá, Fabricio! Tudo bem?

Pelo que você descreveu e pelo código que compartilhou, parece que há um pequeno erro de digitação no cabeçalho da sua requisição POST no arquivo conectaApi.js. Você escreveu "aplication/json", mas o correto seria "application/json".

Veja como deveria ficar:

async function criaVideo(titulo, descricao, url, imagem) {
    const conexao = await fetch("http://localhost:3000/videos", {
        method: "Post",
        headers: {
            "Content-type": "application/json"
        },
        body: JSON.stringify({
            titulo: titulo,
            descricao: `${descricao} mil visualizações`,
            url: url,
            imagem: imagem
        })
    });
    const conexaoConvertida = await conexao.json();

    return conexaoConvertida;
}

Esse pequeno erro pode ter causado o problema que você está enfrentando, pois o servidor pode não estar interpretando corretamente o corpo da sua requisição.

Por favor, tente fazer essa alteração e veja se resolve o problema. Lembre-se de reiniciar o servidor após fazer a alteração.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!