【发布时间】:2014-07-03 18:50:58
【问题描述】:
在 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);
});
});
}
【问题讨论】:
-
为什么需要更改路径/重定向请求?
-
@Robert 在我们的项目设置中,我们有一个 dart 服务器和一个 dart 客户端。两者都是应用程序包并遵循 pub 布局约定。 server/bin 中的服务器 dart 文件和 client/web.xml 中的客户端内容。服务器可以通过指向 client/web/build 目录的 VirtualDirectory 为客户端提供服务(或重定向到开发环境中的 pub serve)。为了区别对服务器的其他请求,URL 必须以 /client/ 开头。但这也意味着,一切都必须在 client/web/client/* 中,除非 /client/ 部分可以从原始请求 uri 路径中删除。
-
你能扩展 HttpRequest 并覆盖你需要的 getter 吗?
-
@Robert 不,我不这么认为,因为服务器已经创建了 HttpRequest。