Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] POST e GET não estão funcionando no Postman

Olá! Ao seguir o passo a passo da aula, na hora de usar o Postman, o body só apresenta a frase "Entrei na rota livros" mesmo eu fazendo o POST e GET conforme as orientações da aula. Ou seja, o livro não está sendo adicionado e nem consigo consultar os livros registrados. Eu instalei o Postman Agent, Postman para Desktop e o código está dessa forma:

app.js

import express from "express";

const app = express();
app.use(express.json());

const livros = [
  {
    id: 1,
    titulo: "O Senhor dos Anéis"
  },
  {
    id: 2,
    titulo: "O Hobbit"
  }
]

function buscaLivro(id) {
    return livros.findIndex(livro => {
        return livro.id === Number(id);
    })
}

app.get("/livros/:id", (req, res) => {
    const index = buscaLivro(req.params.id);
    res.status(200).json(livros[index]);
});

app.post("/livros", (req, res) => {
    livros.push(req.body);
    res.status(201).send("livro cadastrado com sucesso");
});

app.put("/livros/:id", (req, res) => {
    const index = buscaLivro(req.params.id);
    livros[index].titulo = req.body.titulo;
    res.status(200).json(livros);
   });

   export default app;

Onde será que estou errando?

2 respostas
solução!

Olá, Paulo! Tudo bem?

Pelo fato da sua API está retornando sempre a mesma mensagem "Entrei na rota livros", sugere que talvez o código que manipula as rotas GET e POST não esteja sendo executado como esperado. Vamos verificar algumas coisas:

  1. Verifique as Rotas: Certifique-se de que você está usando as rotas corretas no Postman. Para o POST, a URL deve ser http://localhost:3000/livros e para o GET, se você quer buscar todos os livros, também deve ser http://localhost:3000/livros. Se estiver buscando um livro específico, use http://localhost:3000/livros/:id.

  2. Middleware JSON: Você já adicionou app.use(express.json());, o que é ótimo, pois isso permite que o Express processe o corpo das requisições JSON. Certifique-se de que essa linha está realmente antes das definições das rotas.

  3. Verifique o Corpo da Requisição no Postman: Quando você faz um POST, certifique-se de que o corpo da requisição está no formato JSON e que você selecionou a opção "raw" e "JSON" no Postman. Por exemplo:

    {
      "id": 3,
      "titulo": "O Silmarillion"
    }
    
  4. Verifique o Código do Servidor: Certifique-se de que o servidor está rodando e que não há erros no terminal. Você pode usar o nodemon para reiniciar automaticamente o servidor ao salvar alterações no código.

  5. Teste com Mensagens de Log: Adicione alguns console.log() nas funções das rotas para ver se elas estão sendo chamadas corretamente. Por exemplo:

    app.post("/livros", (req, res) => {
        console.log("Recebido POST em /livros");
        console.log("Corpo da requisição:", req.body);
        livros.push(req.body);
        res.status(201).send("Livro cadastrado com sucesso");
    });
    

Se após essas verificações o problema persistir, pode ser útil revisar o código completo, então peço que compartilhe ele usando o GitHub ou Drive do Google.

Espero ter ajudado e bons estudos!

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

Oi Armano, obrigado pela atenção! Eu encontrei o erro, eu tinha pulado uma etapa da aula sem querer, foi pura falta de atenção minha. Se me lembro bem era alguma coisa errada ou faltando no app.js. Obrigado mais uma vez, desejo um ótimo final de ano pra voce!