登录
首页 >  Golang >  Go问答

如何使用相同的端口地址和不同的句柄模式同时提供网页和 API 路由

来源:Golang技术栈

时间:2023-03-28 17:43:14 482浏览 收藏

一分耕耘,一分收获!既然都打开这篇《如何使用相同的端口地址和不同的句柄模式同时提供网页和 API 路由》,就坚持看下去,学下去吧!本文主要会给大家讲到golang等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我有一个带有 CRUD 操作的简单 Web 应用程序,我想使用相同的端口地址和不同的句柄模式来提供网页和 API 路由。如下,

fs := http.FileServer(http.Dir("server/webapps/play_maths"))
http.Handle("/", fs) 

http.Handle("/api", call API routes)

以下是我的 API 路线

func UserRoutes() *mux.Router  {
    var router = mux.NewRouter()
    router = mux.NewRouter().StrictSlash(true)
    router.HandleFunc("/user/create", api.CreateUser)
    router.HandleFunc("/user/get/all", api.GetAllUsers)
    return router
}

正确答案

net/http开箱即用的软件包支持这一点。引自http.ServeMux

模式名称固定的有根路径,如“/favicon.ico”,或有根子树,如“/images/”(注意尾部斜杠)。 较长的模式优先于较短的模式 ,因此如果同时为“/images/”和“/images/thumbnails/”注册了处理程序,则会为以“/images/thumbnails/”开头的路径调用后者的处理程序,而前者将接收对“/images/”子树中任何其他路径的请求。

因此,您可以简单地将文件处理程序注册到 path /,并将 API 处理程序注册到例如/api/path 。在这种情况下,任何以开头的请求/api/都将被定向到 API 处理程序,而任何其他请求都将被定向到文件处理程序。

请注意,这当然意味着如果文件夹中有/api/文件(或者更具体地说,其请求路径以 开头/api/),由于上述原因,它们将无法访问。

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何使用相同的端口地址和不同的句柄模式同时提供网页和 API 路由》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>