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

Erro no PUT

Estou tendo um problema com o PUT que está me retornando o seguinte erro:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>

<body>
    <pre>Cannot POST /livros/3</pre>
</body>

</html>

Até o post o app funcionava como deveria, mas depois de acrescentar o put, e a function, nem mesmo o post funciona. Meu código:

import express from "express";
import { application } from "express";

const app = express();

app.use(express.json());

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

app.get('/', (req, res) => {
    res.status(200).send('Curso de Node');
})

app.get('/livros', (req, res) => {
    res.status(200).json(livros);
})

app.put('/livros/:id', (req, res) => {
    let index = buscaLivro(req.params.id);
    res.json(livros[index]);
})

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

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

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

export default app;
2 respostas

O método put me parece duplicado para a mesma URI:

app.put('/livros/:id', (req, res) => {
    let index = buscaLivro(req.params.id);
    res.json(livros[index]);
})

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

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

Será que esse pode ser o motivo do erro?

solução!

Olá Cassiano, tudo bem?

Um dos métodos que você descreveu, especificamente o terceiro, deveria ser GET ao invés de PUT. Tem dois app.put no seu código. Por favor troque o que está abaixo para app.get e veja se vai funcionar por favor:

Implementação de um método app.put, grifado em amarelo, onde deverá ser trocado para app.get

Se a dúvida permanecer, não deixe de nos informar por aqui.

Bons estudos! 😄

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