Nab*_*lah 52 javascript node.js express
我有一个名为"localhost:3000/returnStat"的服务,它应该将文件路径作为参数.例如'/BackupFolder/toto/tata/titi/myfile.txt'.
如何在浏览器上测试此服务?我如何使用Express格式化此请求?
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);
});
};
Run Code Online (Sandbox Code Playgroud)
Gau*_*rav 56
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.');
Run Code Online (Sandbox Code Playgroud)
我还没有测试过你的代码,但其他的东西都有效
如果您想从请求网址获取路径信息
var url_parts = url.parse(req.url);
console.log(url_parts);
console.log(url_parts.pathname);
Run Code Online (Sandbox Code Playgroud)
1.如果您获取的URL参数仍然无法读取文件,请在我的示例中更正您的文件路径.如果将index.html放在与服务器代码相同的目录中,它将起作用...
2.如果您想要使用节点托管大文件夹结构,那么我建议您使用像expressjs这样的框架
如果您想要原始解决方案到文件路径
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;
Run Code Online (Sandbox Code Playgroud)
来源:http://www.nodebeginner.org/
简单地调用req.url
.应该做的工作.你会得到类似的东西/something?bla=foo
利用URL
WebAPI 的更现代的解决方案:
(req, res) => {
const { pathname } = new URL(req.url || '', `https://${req.headers.host}`)
}
Run Code Online (Sandbox Code Playgroud)
您可以在app.js
文件中使用它.
var apiurl = express.Router();
apiurl.use(function(req, res, next) {
var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
next();
});
app.use('/', apiurl);
Run Code Online (Sandbox Code Playgroud)
req.protocol + '://' + req.get('host') + req.originalUrl
Run Code Online (Sandbox Code Playgroud)
或者
req.protocol + '://' + req.headers.host + req.originalUrl
// 我喜欢这个,因为它从代理服务器中幸存下来,获取原始主机名
归档时间: |
|
查看次数: |
140108 次 |
最近记录: |