Comunidad de diseño web y desarrollo en internet online

Error al hacer POST a una API

Citar            
MensajeEscrito el 09 Jun 2020 06:08 pm
Hola. En primer lugar, gracias de antemano por leer mi hilo. Aquí mi problema:

Estoy creando una API que sirva para crear notas, y luego poder verlas, actualizarlas, etc...

La ruta localhost:5000/notes funciona, al menos con los metodos GET, pues recupera el JSON de la nota que le he puesto por defecto. Sin embargo, al hacer un POST para agregar y crear nuevas notas me da error. Aquí el código:

Controller:

Código Javascript :

const _ = require("lodash");
const notes = require("../model/nodeModel");

exports.getNextId = () =>
  _.parseInt(_.maxBy(Object.keys(notes), _.parseInt)) + 1;

exports.addNote = ({ title, body, created_by }) => {
  const id = getNextId();
  notes[id] = {
    id,
    title,
    body,
    created_by,
    created_at: Date.now(),
    edit_history: [],
  };
  return notes[id];
};

exports.getNotes = () => notes;

exports.getNote = (id) => {
  const note = getNotes()[id];
  return note || null;
};


Routes:

Código Javascript :

const express = require("express");
const { Router } = require("express");
const router = Router();
const _ = require("lodash");

const app = express();

const {
  addNote,
  getNotes,
  getNote,
  favNotes,
  favNote,
} = require("../controllers/noteController");

app.post("/notes", (req, res) => {
  const note = addNote(req.body);
  console.log(req.body);
  res.json(note);
});

router.get("/notes", (req, res) => {
  res.json(_.map(getNotes()));
});

router.get("/notes/:id", (req, res) => {
  const note = getNote(req.params.id);
  res.json(note);
});


Y el modelo:

Código Javascript :

const notes = {
  1: {
    id: 1,
    title: "Test Note",
    body: "Type here whatever you want",
    created_at: Date.now(),
    created_by: "Admin",
    edit_history: [
      {
        edited_at: Date.now(),
        edited_by: "User",
      },
    ],
  },
};

module.exports = notes;


Hago las peticiones con Postman; como decía, la dirección está bien, pues el GET funciona. Falla cuando hago el POST. Yo creo que, o he puesto algo mal en el código, o no hago bien las peticiones en el Postman, a la hora de construir el JSON o el Texto plano, o el código... Estoy liado, no se muy bien como hacerlo.

Alguna ayuda?

Por cp20

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2020 07:15 pm
Te olvidaste lo mas importante: poner que error te da en Node

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 10 Jun 2020 07:02 am

solisarg escribió:

Te olvidaste lo mas importante: poner que error te da en Node

Jorge


Sí perdona, ya está puesto. Es el famoso error 404.

Por cp20

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jun 2020 07:03 am

solisarg escribió:

Te olvidaste lo mas importante: poner que error te da en Node

Jorge


Y en postman me genera este HTML:

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

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

<body>
<pre>Cannot POST /notes</pre>
</body>

</html>

Por cp20

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Jun 2020 04:22 pm
No conozco mucho de node, pero a simple vista parece que donde dice

app.post("/notes", (req, res) => {

deberia decir

router.post("/notes", (req, res) => {

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.