使用expressjs为JSON设置URL基础

时间:2015-09-26 16:05:16

标签: json node.js express

我对节点ExpressJS完全不熟悉,并且需要为我的服务器数据源(jason格式)重写规则。

./
../public/
  /public/css
  /public/js
  /public/index.html

../datasource/
  /datasource/carmodel.json

默认静态目录设置为:

 app.use(express.static(__dirname + '/../public'));

上述工作和一切都在本地3000端口下运行。

我需要用datasource替换car/models/来重写我的json文件(datasource / carmodel.json)的URL。但是我的应用程序无法找到/datasource/carmodel.json文件。我试图通过以下方式重新创建:

app.use('car/models/', require('./../datasource/'));

但是我仍然找不到json源URL。如果我输入http://localhost:3000/car/models/carmodel.jsonhttp://localhost:3000/datasource/carmodel.json,则无关紧要。有什么我想念的吗?

------------------
     EDITED
------------------

请参阅我的项目结构:

./
 node_modules/
 public/
        css/
           custom.css
        js/
          app.js (angular)
        index.html
 datasource/
            carmodel.json
            index.js (express file)
 package.json
 README

目前我的静态文件夹运行的是localhost:3000 /。 datasource / index.js的内容:

var express = require('express');

var app = express();

app.use(express.static('public'));

//json
app.get('/car/models/:filename', function(req, res){
  var filename = req.params.filename;
  var fileDir = 'server/' + filename;
  res.download(fileDir);
})

app.listen(3000, function(){
    console.log('App started on port 3000!');
});

1 个答案:

答案 0 :(得分:0)

检查这样的事情:

app.get('/car/models/:filename', function(req, res){
  var filename = req.params.filename;
  var fileDir = __dirname + '/datasource/' + filename;
  res.download(fileDir);
})

然后这个http://localhost:3000/car/models/carmodel.json应该有效。我不测试它,你从头开始写,因此可能会有一些拼写错误。

我的解决方案并不安全。在生产使用之前,您应该验证'filename'(必须验证来自用户的所有数据)。