我有一个nodejs
应用程序,我在其中创建了项目结构。 package.json
和index.js
个文件,我希望该用户可以下载一个json
文件。
这就是我的项目结构
我在nodejs
服务器上部署了heroku
个应用程序。它运行正常,能够访问index.js
我如何在此处实现功能,以便用户也可以下载swagger.json
。我试图像https://heroku-address/swagger.json那样访问它,但它只显示“Hello World”
index.js
var http = require("http");
http.createServer(function (request, response) {
// Send the HTTP header
// HTTP Status: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// Send the response body as "Hello World"
response.end('Hello World\n');
}).listen(process.env.PORT);
答案 0 :(得分:2)
让我们从定义服务器和应用程序变量开始,
var express = require('express')
var app = module.exports = express();
现在,要显示用户点击文件的标签,下面是显示链接的代码,
app.get('/', function(req, res){
res.send('<ul>'
+ '<li> <a href="/package.json">package.json</a>.</li>'
+ '<li> <a href="/swagger.json">swagger.json</a>.</li>'
+ '</ul>');
});
现在,当用户点击上述链接之一时,将执行下面显示的代码,并将下载文件,
app.get('/:file(*)', function(req, res, next){
var file = req.params.file
, path = __dirname + '/' + file;
res.download(path);
});
最后用于侦听端口的代码,
app.listen(8080);
console.log('Express started on port %d', 8080);
因此,您的完整server.js文件将如下所示,
var express = require('express')
, app = module.exports = express();
app.get('/', function(req, res){
res.send('<ul>'
+ '<li>Download <a href="/package.json">package.json</a>.</li>'
+ '<li>Download <a href="/swagger.json">swagger.json</a>.</li>'
+ '</ul>');
});
app.get('/:file(*)', function(req, res, next){
var file = req.params.file
, path = __dirname + '/' + file;
res.download(path);
});
app.listen(8080);
console.log('Express started on port %d', 8080);