gpt4 book ai didi

dart - 如何使用Dart和架子同时提供动态和静态页面?

转载 作者:行者123 更新时间:2023-12-04 05:17:53 24 4
gpt4 key购买 nike

使用shelf_static通过Dart转换静态网页没有问题:

var staticHandler = createStaticHandler(staticPath, defaultDocument:'home.html');
io.serve(staticHandler, 'localhost', port).then((server) {
print('Serving at http://${server.address.host}:${server.port}');
});

而且我可以将 shelf_route用于动态网页:

Router routes = new Router()
..get('/item/{itemid}', handler.doItem);
var handler = const shelf.Pipeline()
.addHandler(routes.handler);

io.serve(handler, 'localhost', port).then((server) {
print('Serving at http://${server.address.host}:${server.port}');
});

但是我正在努力为动态版本添加静态处理程序。
我尝试过的事情包括:

Router routes = new Router()
..get('/item/{itemid}', handler.doItem)
..get('/', staticHandler);

或者 ...

  ..get('/.*', staticHandler);

或者 ...

  ..get('/{any}', staticHandler);

如果我请求 home.html,但所有这些都为我提供了指定的默认 http://localhost:8080/页面,但明确要求现有的页面 http://localhost:8080/home.html给了我“未找到”的页面。

我什至不应该尝试使用 shelf_static做到这一点吗?如果没有,正确的方法是什么?
谢谢!

最佳答案

您可以使用 Cascade 。它创建了一系列处理程序,如果前一个处理程序给出404或405响应,则移至下一个处理程序。

var staticHandler = createStaticHandler(staticPath, defaultDocument:'home.html');
var routes = new Router()
..get('/item/{itemid}', handleItem);

var handler = new Cascade()
.add(staticHandler)
.add(routes.hander)
.handler;
io.serve(handler, 'localhost', port).then((server) {
print('Serving at http://${server.address.host}:${server.port}');
});

关于dart - 如何使用Dart和架子同时提供动态和静态页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com