如何POST / GET到路由的根目录?

时间:2015-08-05 12:35:49

标签: node.js express

在我非常简单的应用程序中,我有一个用户路线,当我浏览到http://localhost/api/users

时会被点击

我是否可以处理帖子或获取该网址的请求而无需在路线上添加任何额外内容?使用下面的代码,当我发布到http://localhost/api/users/new但不发送到http://localhost/api/users并且当我尝试获取http://localhost/api/users/13而不是http://localhost/api/users

时,会触发路由处理程序

我知道我可以使用router.post(' /',function(req,res){});发布到http://localhost/api/users/,但额外的斜线似乎不优雅

app.js

var express = require('express');
var users = require('./routes/user');
var app = express();
app.use('/api/users', users);
module.exports = app;

路由\ user.js的

var express = require('express');
var User = require('../models/user');

var router = express.Router();

router.post(function(req, res) {
    // post to root
});

router.post('/new', function(req, res) {
    // post to /new
});

router.get(function (req, res, next) {
    // get root
});

router.get('/:id', function (req, res, next) {
    // get /id
});

module.exports = router;

3 个答案:

答案 0 :(得分:3)

在routes / user.js中,你可以简单地写:

router.post('/', function (req, res, next) {
        // post to /api/user or /api/user/
});    

router.get('/', function (req, res, next) {
        // get /api/user or /api/user/
});

这适用于:http://localhost/api/usershttp://localhost/api/users/

此外,在网址末尾添加/并不是一件好事!

答案 1 :(得分:1)

你可以使用这样的空路线:

router.get("", function (req, res, next) {
    // get root
});

您将能够访问/api/user以及/api/user/

答案 2 :(得分:0)

此外,您可以使用cascade route方法处理路线,以简化代码并使其更“优雅”:

router

http://expressjs.com/es/api.html#router.route