Express.js-如果路由有多个/-404错误,则无法工作

Express.js-如果路由有多个/-404错误,则无法工作,express,Express,GET/user/me-发回404(未找到资源) 如果我将第二个“/”改为“u”(即GET users_me),那么它就可以工作了 我有两个问题: 1) 如何修复它以便我可以使用“GET/user/me” 2) 它与下划线一起工作,所以使用斜杠与下划线相比有什么优势吗 ///////////代码 require('./config/config'); const _ = require('lodash'); const express = require('express'); const b

GET/user/me-发回404(未找到资源)

如果我将第二个“/”改为“u”(即GET users_me),那么它就可以工作了

我有两个问题:

1) 如何修复它以便我可以使用“GET/user/me”

2) 它与下划线一起工作,所以使用斜杠与下划线相比有什么优势吗

///////////代码

require('./config/config');

const _ = require('lodash');
const express = require('express');
const bodyParser = require('body-parser');
const {ObjectID} = require('mongodb');

//const multer = require('multer');
//const router = express.Router();
var renameKeys = require('rename-keys');

var {mongoose} = require('./db/mongoose');

//var {Todo} = require('./models/todo');
var {User} = require('./models/user');
var {authenticate} = require('./middleware/authenticate');

var app = express();
const port = process.env.PORT;

app.use(bodyParser.json());




// GET users/me

app.get('/users_me', authenticate, (req, res) => {
  res.send(req.user);
});



// POST /users -- signing up a new user [how will this handle logging in instead of signing up?]
app.post('/users', (req, res) => {
  var body = _.pick(req.body, ['email', 'password']);
  var user = new User(body);
  user.save().then(() => {
    return user.generateAuthToken();
  }).then((token) => {
    res.header('x-auth', token).send(user);
  }).catch((e) => {
    res.status(400).send(e);
  })
});



app.listen(port, () => {
  console.log(`Started up at port ${port}`);
});

module.exports = {app};
第一个问题:

换衣服

app.get('/users_me', authenticate, (req, res) => {
  res.send(req.user);
});

然后发出Get请求:

somehost:someport/users/myusername
第二个问题:

路由就像文件系统一样工作:

/path/subpath/
所以不能用下划线代替斜杠“/”

信息:您可以在GET请求的URL中传递用户的id或名称(取决于您的逻辑):

GET请求(在本例中是到具有端口3000的本地主机):

路线:

 router.get('/getuserbyid/:id', ..... 

希望有帮助;)

谢谢!我最初使用了“/users/me”,但它不起作用,所以我将它改为下划线。你所建议的是我在别处看到的,但它对我不起作用。但我仍然不知道如何让它与“/users/me”一起工作?我最初尝试过,但当它不起作用时,我使用了“/users\u me”。您应该有不同的登录和注册路径,即:router.post('users/login',…)router.post('users/register',…)等。。此外,还建议将路由放在“/routes”文件夹中的不同文件中,特别是如果您具有令牌生成的身份验证逻辑,并有保护措施防止未经授权访问某些路由(即管理组件),否则您的app.js会变得一团糟;)我个人使用邮递员来测试我的路线,我可以向你推荐!关于你在评论中的问题,你能提供你提出的要求吗?别忘了重新编译codechanges——或者使用nodemon;)您是否尝试了router.get('/users/:someusername',…)?
localhost:3000/users/getuserbyid/20
 router.get('/getuserbyid/:id', .....