简单节点服务器返回"无法GET /"

时间:2015-09-12 15:17:21

标签: node.js

我有这个简单的服务器,当我去localhost:3000我得到"不能GET /"当我尝试呼叫/注册时,我失败了。有任何想法吗?感谢

var express = require('express');
var gcm = require('node-gcm');
var apn = require('apn');

var app = express();
var device_token;

 /*
 , function(){
 var host = server.address().address;
 var port = server.address().port;
 console.log(port, host);
 }
*/
 app.listen(3000);

 app.use(function(req, res, next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,    Content-Type, Accept");
   next();
 });

app.post('/register', function(req, res){
   device_token = req.body.device_token;
   console.log('device token received');
   console.log(device_token);

   res.send('ok');
});

2 个答案:

答案 0 :(得分:2)

导航到浏览器中的页面是GET请求。您只为路由POST的{​​{1}}请求定义了处理程序:

/register

您还没有为app.post('/register', function(req, res){ device_token = req.body.device_token; console.log('device token received'); console.log(device_token); res.send('ok'); }); 路线定义任何内容。因此,当您导航到其中任何一个时,它正确地抛出/,因为该路线本身未被定义,即对于Cannot GET,或该路线的/方法不是{&1;}。定义,即。 GET

您可以在根网址(/register)处允许GET请求:

/

对于app.get('/', function(req, res){ res.send('Hello!') }) 路由,您不应使用/register请求,因为您需要在请求正文中发送信息以实际注册用户。 (只有发布请求才允许这样做。)

您已正确设置。您无法在浏览器中查看它。使用postman或卷曲测试它,看它是否有效。

答案 1 :(得分:1)

您没有/的已定义路线。 /register不起作用,因为您有app.post,它只接受POST请求。如果您希望GET /register请求有效,请添加以下代码:

app.get('/register', function(req, res) {
    res.send("It works!");
});