gpt4 book ai didi

http - 在 root 和 rest on/api 上提供静态内容

转载 作者:IT王子 更新时间:2023-10-29 01:50:49 24 4
gpt4 key购买 nike

我正在使用 httprouter用于从 api 调用的路径中解析一些参数:

router := httprouter.New()
router.GET("/api/:param1/:param2", apiHandler)

并且想添加一些文件到根目录(/)来服务。它只是 index.htmlscript.jsstyle.css。全部在名为 static

的本地目录中
router.ServeFiles("/*filepath", http.Dir("static"))

这样我就可以使用浏览器访问 localhost:8080/ ,它将提供来自浏览器的 index.htmljs将调用 /api/:param1/:param2

但是这个路径和/api路径冲突。

紧急情况:通配符路由“*filepath”与路径“/*filepath”中的现有子项冲突

最佳答案

正如其他人所指出的,仅使用 github.com/julienschmidt/httprouter 是不可能的。

请注意,这可以使用标准库的多路复用器实现,详见此答案:How do I serve both web pages and API Routes by using same port address and different Handle pattern

如果您必须在根目录下提供所有 Web 内容,另一个可行的解决方案可能是混合使用标准路由器和 julienschmidt/httprouter。使用标准路由器在根目录中注册和提供您的文件,并使用 julienschmidt/httprouter 提供您的 API 请求。

这是它的样子:

router := httprouter.New()
router.GET("/api/:param1/:param2", apiHandler)

mux := http.NewServeMux()
mux.Handle("/", http.FileServer(http.Dir("static")))
mux.Handle("/api/", router)

log.Fatal(http.ListenAndServe(":8080", mux))

在上面的例子中,所有以/api/开头的请求都会被转发给router处理程序,其余的将尝试由文件服务器处理.

关于http - 在 root 和 rest on/api 上提供静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48259630/

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