在node.js中,可以通过执行以下操作来调整请求的URL:
app.use(function(req, res, next) {
if (req.url.slice(-1) === '/') {
req.url = req.url.slice(0, -1);
}
next();
});
以下dart失败,因为所有请求属性,Uri及其路径只有getter。有什么建议可以实现吗?也许通过创建一个新的HttpRequest并将其响应发送到原始请求?
void main() {
var virDir = new VirtualDirectory("../somewhere_else");
HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8080).then((server) {
print("Serving at ${server.address}:${server.port}");
server.listen((HttpRequest request) {
request.uri.path = "/newPath";
virDir.serverRequest(request);
});
});
}
答案 0 :(得分:2)
您是否尝试过使用serveFile而不是serveRequest?这可能是一个临时的解决方法,直到您想要的行为得到实施,或由Dart团队开发人员解决。
我还没有测试过这段代码,但它理论上应该可行:
void main() {
var virDir = new VirtualDirectory("../somewhere_else");
HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8080).then((server) {
print("Serving at ${server.address}:${server.port}");
server.listen((HttpRequest request) {
var newUriPath = "../somwhere_else/${request.uri.path.replace("/client/","")}";
virDir.serveFile(new File(newUriPath), request);
});
});
}
答案 1 :(得分:2)
从http_server(VirtualDirectory)的0.9.3版本开始,我在构造函数中添加了一个可选的pathPrefix
命名参数。
这应该可以完全按照你要做的去做,而无需重写请求的Uri。