繁体   English   中英

使用Node.JS在浏览器中显示json文件,不带文件扩展名

[英]Display json file in Browser using Node.JS without file extension

我使用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");

我怎样才能做到这一点? 我应该使用路线/快递吗? 有人有什么建议吗?

先感谢您!

干杯,弗拉德

您的问题可能是由于内容类型。 扩展名.json可能会触发您的浏览器将其作为application/json 因此,如果删除扩展名,则需要添加适当的Content-Type

鉴于您已经在使用内容类型,您不能在此处添加它,并确保您也为jsons编写类型吗?

  var contentTypesByExtension = {
    '.html': "text/html",
    '.css':  "text/css",
    '.js':   "text/javascript",
    '.json': "application/json" // <---
  };

我刚刚使用了大锤方法来评论这个代码片段:

if(!exists) {
      res.writeHead(404, {"Content-Type": "text/plain"});
      res.write("404 Not Found\n");
      res.end();
      return;
    }

现在它可以调用: http://localhost:8888/Test

干杯,弗拉德

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM