Testing REST routes with curl -X PUT returns 404

I study the MEAN stack and follow the MEAN tutorial at thinkster.io https://thinkster.io/mean-stack-tutorial/

I am in the section "Opening REST Routes". I am trying to print the top using curl with the command:

curl -X PUT http://localhost:3000/posts/55387047f2334d2
c227e8079/upvote

The following error messages appear:

C:\Users\Michael\Desktop>curl -X PUT http://localhost:3000/posts/55387047f2334d2
c227e8079/upvote
<h1>Not Found</h1>
<h2>404</h2>
<pre>Error: Not Found
    at app.use.res.render.message (C:\Users\Michael\Desktop\flapper-news\app.js:
39:13)
    at Layer.handle [as handle_request] (C:\Users\Michael\Desktop\flapper-news\n
ode_modules\express\lib\router\layer.js:82:5)
    at trim_prefix (C:\Users\Michael\Desktop\flapper-news\node_modules\express\l
ib\router\index.js:302:13)
    at C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\router\ind
ex.js:270:7
    at Function.proto.process_params (C:\Users\Michael\Desktop\flapper-news\node
_modules\express\lib\router\index.js:321:12)
    at next (C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\rout
er\index.js:261:10)
    at C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\router\ind
ex.js:603:15
    at next (C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\rout
er\index.js:246:14)
    at Function.proto.handle (C:\Users\Michael\Desktop\flapper-news\node_modules
\express\lib\router\index.js:166:3)
    at router (C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\ro
uter\index.js:35:12)</pre>

My mongoose schema is defined relative to module.exports = app in app.js, so I'm not sure what else to do. I tested my copy and paste skills and there are no typos.

+4
source share
3 answers

Restarting the node server solved the problem for me

+2
source

, ? .

router.put('/posts/:post/upvote', function(req, res, next) {
  req.post.upvote(function(err, post){
    if (err) { return next(err); }

    res.json(post);
  });
});

, , , . , localhost, ip, 192.168 .., .

+1

, . , .

REST Routes > Pre-Loading Objects :

router.param('post', function(req, res, next, id) {
  var query = Post.findById(id);

  query.exec(function(err, post) {
    if (err) { return next(err); }
    if (!post) { return next(new Error('can\'t find post')); }

    req.post = post;
    return next();
  });
});

:

var query = Post.findById(id);

:

var query.exec(function(err, post) {

.

+1

Source: https://habr.com/ru/post/1584166/


All Articles