Node.js: GET请求返回404未找到

3

我正在使用Node.js和Express创建REST API。服务器启动于localhost:xxxx,但localhost:xxxx/bits返回404错误。

var express = require('express');
var app = express();

app.get('/bits', function(req, res) {
    console.log("Bits called");
});

app.get('/bits/:id', function(req, res) {
    console.log("Bits ID called");
});

app.listen(xxxx);
console.log('Listening on port xxxx.');

Help?


由于路由或简单代码没有问题,因此最有可能的情况是您访问的端口上并没有运行您的服务器,或者根本没有运行。您是否尝试在您无权运行的低端口上运行? - jfriend00
服务器肯定在运行。我尝试了以下代码:var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(83, 'localhost'); console.log('Server running at http://127.0.0.1:83/'); 它打印出了“Hello World”。 - pxthxk
我刚刚发现这个服务器运行在127.0.0.1:83而不是localhost:83。我的system32主机文件中有127.0.0.1 localhost。可能的原因是什么? - pxthxk
在那台电脑上,在命令窗口中尝试输入 ping -4 localhost,看看它认为 localhost 是哪个 IP 地址。 - jfriend00
它返回相同的值,即127.0.0.1。 - pxthxk
1个回答

2

我刚刚运行了你的代码,但将xxxx替换为端口号。对我来说它很好用。

var express = require('express');
var app = express();

app.get('/bits', function(req, res) {
    res.send([{name:'bit1'}, {name:'bit2'}]);
});

app.get('/bits/:id', function(req, res) {
    res.send({id:req.params.id, name: "The Name", description: "description"});
});

app.listen(8080);
console.log('Listening on port 8080.');

我也运行了一些curl命令来展示它的工作。

[09:24 AM] jsloyer@Jeffs-MacBook-Pro [Downloads]>curl http://127.0.0.1:8080/bits
[{"name":"bit1"},{"name":"bit2"}]
[09:25 AM] jsloyer@Jeffs-MacBook-Pro [Downloads]>curl http://127.0.0.1:8080/bits/1
{"id":"1","name":"The Name","description":"description"}
[09:25 AM] jsloyer@Jeffs-MacBook-Pro [Downloads]>

此外,这里有一个完整的Node.js git项目,其中包括其源代码。

您可以单击下面的按钮将其部署并查看其运行情况。

Deploy to Bluemix


我指的是端口号。还有其他检查可能出现的错误的方法吗? - pxthxk
你正在运行哪个版本的node和哪个版本的express? - Jeff Sloyer
Node.js: 0.12.2 Express: 3.20.2 - pxthxk
尝试拉取我发布的git项目,看看是否有效。我发布了使用express 4.x的示例,但这并不重要,因为在这两个版本之间你没有做任何真正重要的事情。 - Jeff Sloyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接