我对节点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.json
或http://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!');
});
答案 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'(必须验证来自用户的所有数据)。