0

I'm more or less new to web development and I've had trouble getting a PUT request to go through. We've set up a database and succeeded in getting GET and POST requests work but we keep getting a 404 error with trying to send a PUT request.

router.put('/edit-beverage/:id', (req, res) => {

    console.log(`Updating beverage on id ${data.params.id}:`);
    let data = req.body;

    query1 = `UPDATE Beverage `
    query1 += `SET name = '${data.nameInput}', abv = ${data.abvInput}, breweryID = ${data.breweryID_FK}, categoryID = ${data.categoryID_FK} `
    query1 += `WHERE beverageID = ${data.params.id};`

    db.pool.query(query1, (err, rows, fields) => {
        res.redirect('/');
    });
});

Here's what we have on another page.

let express = require('express');   // We are using the express library for the web server
let app = express();            // We need to instantiate an express object to interact with the server in our code
PORT = process.env.PORT || 3000;;                 // Set a port number at the top so it's easy to change in the future
app.use(express.json());
app.use(express.urlencoded({extended: true}));


// Cors should allow access from extrernal addresses.
var cors = require('cors')
app.use(cors())

// Database
const db = require('./database/db-connector')

/*
    ROUTES
*/
// create new Router instance for api routes
// mount the router on the app
app.use('/', require('./routes'));
module.exports = app;

let router = require('express').Router();

And this is what I try to send on Postman. As far as I can tell, the endpoint is the same as what's on the file

Would anyone be able to tell me what's going on? I'm confused as to why the server isn't recognizing the request as a proper path.

Richard Silva
  • 33
  • 1
  • 4
  • 1
    endpoint in express is `/edit-beverage/:id` ... your request `/edit-beverage/?id=9` .... I thought it would need to be `/edit-beverage/9` ... as per [documentation](https://expressjs.com/en/guide/routing.html#route-parameters) – Bravo Mar 09 '22 at 02:25
  • I didn't know it had to be arranged like that for a put request. Appreciate your help! Not sure why but when I put id as a value in Postman, '?id=9' automatically pops up. – Richard Silva Mar 09 '22 at 02:34
  • When using a framework like Express, you should familiarise yourself with [the documentation](https://expressjs.com/en/guide/routing.html#route-parameters) – Phil Mar 09 '22 at 03:17
  • `router.put('/edit-beverage/:id'` catch id in `req.params.id`. In postman you are specifiying id in `req.query.id`. – jkalandarov Mar 26 '22 at 10:15

0 Answers0