<分区>
我正在用 Go 创建一个用于移动应用程序的服务器。如果用户不更新应用程序,我需要能够支持多个版本的 API。版本控制的主要问题是以移动应用程序版本的正确格式返回数据。
我看到有三种基本方法可以做到这一点。
A. 一种方法是在“/”上设置一个路由处理程序,然后允许该函数解析 url 以进行版本控制。
示例:
func main() {
http.HandleFunc("/", routes.ParseFullURI)
}
B.使用诸如 gorilla/mux 之类的库来处理路由器内的模式,但我看到了一些 warnings that this can be too slow .
示例:
func main() {
mux.HandleFunc("{version:}/", routes.ParseVersionForHome)
mux.HandleFunc("{version:}/getData", routes.ParseVersionForGetDAta)
mux.HandleFunc("{version:}/otherCall", routes.ParseVersionForOtherCall)
}
C.拥有不变的个别网址,但基于 header ,分成不同的版本。 示例:
func main() {
http.HandleFunc("/", routes.ParseHeaderForVersionForHome)
http.HandleFunc("/getData", routes.ParseHeaderForVersionForGetData)
http.HandleFunc("/otherCall", routes.ParseHeaderForVersionForOtherCall)
}
我担心选项 1 的代码过于困惑。我担心选项 2 的性能太慢,我担心选项 3 将难以让客户处理,或者因为版本没有明确标记而变得困惑。
哪种方法最适合 Go,并且会为经常轮询的移动应用带来最佳性能?