返回

纯Go,一分钟带你建立高效率Web服务

后端

Go语言标准库实现Web服务之创建路由

开启我们漫长旅程的第一步:导入必要的依赖包

首先,先让我引进一下作为本次工作任务的重要工具:必要依赖库。

import (
    "fmt"
    "html/template"
    "net/http"
    "time"
)

相信大家一定不会对这些陌生吧,对于它们的基本信息,我们就不再细说啦!

现在我们将创建一个新的http.HandlerFunc类型的变量handle,用于处理请求。

var handle = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    // 获取当前时间,并打印出来
    t := time.Now()
    fmt.Fprintf(w, "Hello, World! You're in %v now!", t)
})

但这时我们发现它还不会做出我们所需要的反应,所以我们需要创建一个http.Server实例并配置其服务地址和处理函数:

// 建立一个http.Server实例,我们会在8080端口运行
srv := &http.Server{
    Addr:    ":8080",
    Handler: handle,
}

现在,让我们来一起为我们的项目选择最合适的启动方式

方案一:用http.ListenAndServe()启动项目。

// 立即运行服务
log.Fatal(http.ListenAndServe(":8080", handle))

方案二:用srv.ListenAndServe()启动项目。

// 立即运行服务
log.Fatal(srv.ListenAndServe())

方案三:采用srv.ListenAndServeTLS()启动项目(强烈建议使用https)。

// 启动https服务
log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key"))

到此,我们的任务就完成了,接下来只需要用你喜爱的方式,运行它吧!

扩展:为我们的服务器创建路由

对于简单应用来说,我们已经足够了,但如果你想开发复杂应用的话,路由显然必不可少。

// 新建一个路由器,名为mux
mux := http.NewServeMux()

是时候给路由器添砖加瓦了!

我们为其配置一个路由规则,将“/hello”映射到我们的处理函数。

//"/hello" 映射到我们的处理函数
mux.HandleFunc("/hello", handle)

现在,我们来启动项目

最后一步,我们启动项目,用http.ListenAndServe()或srv.ListenAndServe()都可以。

// 启动项目,可根据需要选择使用http.ListenAndServe()或srv.ListenAndServe()
log.Fatal(http.ListenAndServe(":8080", mux))
log.Fatal(srv.ListenAndServe())

这样我们就完成了路由器的创建,你可以用更加强大的路由器配置来创建更复杂的应用程序。

让我们总结一下

在这篇文章里,我们重点介绍了如何在Go标准库中创建路由器并启动项目。如果你有兴趣进行更加深入的学习,我推荐你阅读《Go Web编程》这本书籍,或者直接访问官方文档来获得更多帮助。