返回顶部
首页 > 资讯 > 后端开发 > GO >为 URL 的所有子目录提供默认页面
  • 652
分享到

为 URL 的所有子目录提供默认页面

2024-04-04 23:04:59 652人浏览 独家记忆
摘要

来到编程网的大家,相信都是编程学习爱好者,希望在这里学习golang相关编程知识。下面本篇文章就来带大家聊聊《为 URL 的所有子目录提供默认页面》,介绍一下,希望对大家的知识积累有所帮助,助力实战

来到编程网的大家,相信都是编程学习爱好者,希望在这里学习golang相关编程知识。下面本篇文章就来带大家聊聊《为 URL 的所有子目录提供默认页面》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发

问题内容

我想以这种方式调用 fileserver,它为不同目录的所有子目录(subdirs)提供相同的页面。

当然,这种简单的方法是行不通的:

for _, prefix := range subdirs {
     fsdist := Http.fileserver(http.dir(defaultpage))
     r.pathprefix(prefix).handler(http.stripprefix(prefix, fsdist))
  }

因为 /abc/123 映射到 defaultpage/123 而我只需要 defaultpage

例如,如果 subdirs := []string{"abc", "xyz"},则应如下映射:

abc/xyz => defaultPage
    abc/def => defaultPage
    xyz/aaa => defaultPage

我知道我需要类似 http.setprefix 或类似的东西,但没有这样的东西。当然,我可以编写自己的处理程序,但我想知道这里的标准方法是什么?

这个任务很常见,我想应该有一些标准化的方法?


正确答案


编辑:多路由支持和静态文件服务:

听起来你只是想要:

r := mux.newrouter()
r.handlefunc("/products", productshandler) // some other route...

staticfilepath := "catch-all.txt"

fh := http.handlerfunc(
    func(w http.responsewriter, r *http.request) {
        http.servefile(w, r, staticfilepath)
    },
)

for _, dir := range []string{"abc", "xyz"} {
    r.pathprefix("/" + dir + "/").handler(fh)
}

工作示例(在演示之外运行):https://play.Golang.org/p/MD1Tj1CUcEh

$ curl localhost:8000/abc/xyz
catch all

$ curl localhost:8000/abc/def
catch all

$ curl localhost:8000/xyz/aaa
catch all

$ curl localhost:8000/products
product

理论要掌握,实操不能落!以上关于《为 URL 的所有子目录提供默认页面》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

您可能感兴趣的文档:

--结束END--

本文标题: 为 URL 的所有子目录提供默认页面

本文链接: https://lsjlt.com/news/596335.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 为 URL 的所有子目录提供默认页面
    来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《为 URL 的所有子目录提供默认页面》,介绍一下,希望对大家的知识积累有所帮助,助力实战...
    99+
    2024-04-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作