No arquivo conectaApi.js eu declaro duas funções, em uma eu faço uma requisição GET e em outro um POST, e em outros dois arquivos eu chamo essas funções.
Minha dúvida está no "try catch", quando chamei a função GET, o "try catch" funcionou normalmente quando eu forcei um erro ao quebrar a URL da requisição, mesmo não tendo um "throw" em lugar nenhum, porém para a função POST cair no "catch", foi necessário fazer um "throw new Error()" quando declarei a função.
Então a minha dúvida é essa, sempre q eu fizer uma requisição POST eu terei que fazer esse "throw" para ter oq cair no "catch"? Ou eu estou errando em alguma outra coisa?
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": "application/json"
},
body: JSON.stringify({
titulo: titulo,
descricao: `${descricao} mil visualizações`,
url: url,
imagem: imagem
})
});
if(!conexao.ok){
throw new Error("Não foi possível enviar o vídeo.");
}
const conexaoConvertida = await conexao.json();
return conexaoConvertida;
}
mostrarVideos.js:
async function listaVideo(){
try {
const listaApi = await conectaApi.listaVideos();
listaApi.forEach(elemento => {
lista.appendChild(constroiCard(elemento.titulo, elemento.descricao, elemento.url, elemento.imagem));
});
} catch {
lista.innerHTML = `<h2 class="mensagem__titulo">Não foi possível carregar a lista de videos.</h2>`;
}
}
criarVideo.js
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();
try {
await conectaApi.criaVideo(titulo, descricao, url, imagem);
window.location.href = "../pages/envio-concluido.html";
} catch(e) {
alert(e);
}
}