Tengo una aplicación nodejs donde he creado la estructura del proyecto. Archivos package.json e index.js , un archivo json también que quiero que el usuario pueda descargar.
Así es como se estructura mi proyecto.
He implementado la aplicación nodejs en el servidor heroku . Está funcionando perfectamente, capaz de acceder a index.js
Cómo puedo implementar una funcionalidad aquí para que los usuarios también puedan descargar swagger.json . Traté de acceder a esto como https://heroku-address/swagger.json pero solo muestra "Hello World"
índice.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);Comencemos con la definición de variables de servidor y aplicación,
var express = require('express') var app = module.exports = express();Ahora, para mostrar una etiqueta en la que si los usuarios hacen clic en el archivo se descargará, a continuación se muestra el código para mostrar enlaces,
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>'); });Ahora, cuando el usuario haga clic en uno de los enlaces anteriores, se ejecutará el código que se muestra a continuación y se descargará el archivo.
app.get('/:file(*)', function(req, res, next){ var file = req.params.file , path = __dirname + '/' + file; res.download(path); });finalmente código para escuchar en el puerto,
app.listen(8080); console.log('Express started on port %d', 8080);Entonces, su archivo server.js completo se verá así,
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);