J'ai un service appelé "localhost: 3000/returnStat" qui devrait prendre un chemin de fichier en paramètre. Par exemple, '/BackupFolder/toto/tata/titi/myfile.txt'.
Comment puis-je tester ce service sur mon navigateur? Comment puis-je formater cette demande en utilisant Express par exemple?
exports.returnStat = function(req, res) {
var fs = require('fs');
var neededstats = [];
var p = __dirname + '/' + req.params.filepath;
fs.stat(p, function(err, stats) {
if (err) {
throw err;
}
neededstats.Push(stats.mtime);
neededstats.Push(stats.size);
res.send(neededstats);
});
};
var http = require('http');
var url = require('url');
var fs = require('fs');
var neededstats = [];
http.createServer(function(req, res) {
if (req.url == '/index.html' || req.url == '/') {
fs.readFile('./index.html', function(err, data) {
res.end(data);
});
} else {
var p = __dirname + '/' + req.params.filepath;
fs.stat(p, function(err, stats) {
if (err) {
throw err;
}
neededstats.Push(stats.mtime);
neededstats.Push(stats.size);
res.send(neededstats);
});
}
}).listen(8080, '0.0.0.0');
console.log('Server running.');
Je n'ai pas testé votre code mais d'autres choses fonctionnent
Si vous souhaitez obtenir les informations de chemin à partir de l'url de la demande
var url_parts = url.parse(req.url);
console.log(url_parts);
console.log(url_parts.pathname);
1.Si vous obtenez les paramètres d'URL toujours pas en mesure de lire le fichier, corrigez simplement le chemin de votre fichier dans mon exemple. Si vous placez index.html dans le même répertoire que le code serveur, cela fonctionnerait ...
2.si vous avez une grande structure de dossiers que vous souhaitez héberger à l'aide d'un nœud, je vous conseillerais d'utiliser un cadre tel que expressjs
Si vous voulez que la solution brute mette le chemin du fichier
var http = require("http");
var url = require("url");
function start() {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
source: http://www.nodebeginner.org/
appelez simplement req.url
. cela devrait faire le travail. vous obtiendrez quelque chose comme /something?bla=foo
Vous pouvez l'utiliser dans app.js
fichier .
var apiurl = express.Router();
apiurl.use(function(req, res, next) {
var fullUrl = req.protocol + '://' + req.get('Host') + req.originalUrl;
next();
});
app.use('/', apiurl);
req.protocol + '://' + req.get('Host') + req.originalUrl
ou
req.protocol + '://' + req.headers.Host + req.originalUrl
// J'aime celui-ci, qui survit d'un serveur proxy, obtenant le nom d'hôte d'origine.
Basé sur la suggestion de @epegzz pour la regex.
( url ) => {
return url.match('^[^?]*')[0].split('/').slice(1)
}
retourne un tableau avec des chemins.