我使用javascript和Node.js创建了一个服务器,在我的浏览器中显示了一个JSON文件。
但是,我想在没有附加信息的情况下致电网站http://localhost:8888/Test.json
。
例如:http://localhost:8888/Test
这是我的服务器代码:
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs")
port = process.argv[2] || 8888;
file = (__dirname + '/Test.json');
http.createServer(function(req, res) {
var uri = url.parse(req.url).pathname, filename = path.join(process.cwd(), uri);
var contentTypesByExtension = {
'.html': "text/html",
'.css': "text/css",
'.js': "text/javascript",
'.json': "application/json" //Edited due to answer - Still no success :(
};
path.exists(filename, function(exists) {
if(!exists) {
res.writeHead(404, {"Content-Type": "text/plain"});
res.write("404 Not Found\n");
res.end();
return;
}
fs.readFile(file, 'utf8', function (err, file) {
if (err) {
console.log('Error: ' + err);
return;
}
file = JSON.parse(file);
console.dir(file);
var headers = {};
var contentType = contentTypesByExtension[path.extname(file)];
if (contentType) headers["Content-Type"] = contentType;
res.writeHead(200, headers);
res.write(JSON.stringify(file, 0 ,3));
res.write
res.end();
});
});
}).listen(parseInt(port, 10));
console.log("JSON parsing rest server running at\n => http://localhost:" +
port + "/\nPress CTRL + C to exit and leave");
我该怎么做? 我应该使用路线/快递吗? 有人有什么建议吗?
提前谢谢!
干杯,弗拉德
答案 0 :(得分:1)
您的问题可能是由于内容类型造成的。扩展名.json可能会触发您的浏览器将其用作application/json
。因此,如果您删除了扩展程序,则需要添加正确的Content-Type
。
鉴于您已经在使用内容类型,您是否只需将其添加到此处,并确保您也为jsons编写类型?
var contentTypesByExtension = {
'.html': "text/html",
'.css': "text/css",
'.js': "text/javascript",
'.json': "application/json" // <---
};
答案 1 :(得分:0)
我现在只是使用了大锤方法来评论此代码片段:
if(!exists) {
res.writeHead(404, {"Content-Type": "text/plain"});
res.write("404 Not Found\n");
res.end();
return;
}
现在只需拨打电话:http://localhost:8888/Test
干杯,弗拉德