快递.js - 如果路由有多个 / - 404 错误,则路由将不起作用



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

如果我将第二个"/"更改为"_"(即 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);
});

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

然后发出 Get 请求:

somehost:someport/users/myusername

第二个问题:

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

/path/subpath/

因此,您不能使用下划线来替换斜杠"/">

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

GET 请求(在本例中为端口为 3000 的本地主机(:

localhost:3000/users/getuserbyid/20

路线:

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

希望对;)有所帮助

最新更新