为什么请求体在一条路线中未定义?

时间:2015-01-29 18:09:01

标签: node.js rest express

我尝试使用nodeJS和express来建立REST API时遇到了一些麻烦。以下代码定义了两个路由," stores"和"用户"。

令人惊讶的是,通往" / user"工作很好但是当一个请求到达" / stores"请求正文显示为未定义。我已经找到了解决方案,但似乎没有什么对我有用。

两个控制器都具有相同的结构。

我做错了什么?

var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
methodOverride = require("method-override"),
mongoose = require('mongoose');


// Connection to DB
mongoose.connect('mongodb://localhost/appDB', function(err, res) {
if(err) throw err;
console.log('Connected to Database');
});


// Middlewares
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());

//Import models and controllers
var userModel=require("./models/user.js")(app,mongoose);
var storeModel=require("./models/store.js")(app,mongoose);
var usersController=require("./controllers/users.js");
var storesController=require("./controllers/stores.js");

//Router options
var router=express.Router();



router.route('/stores')
.get(storesController.getNearestStores);

router.route('/user')
.post(usersController.addUser);

app.use(router);


//Start server
app.listen(3000, function() {
console.log("Node server running on http://localhost:3000");
});

非常感谢。

P.S .:第一次使用nodejs和express(甚至是mongo)

2 个答案:

答案 0 :(得分:1)

这是因为http标准中的body请求中没有GET。仅限POSTPUT

您要做的是使用query string

get
/stores?location=mystore

这样你的回调就可以访问req.query

req.query
{
    location: 'mystore'
}

答案 1 :(得分:0)

HTTP GET with request body

这给了我解决方案,get请求不接受HTTP标准下的参数。