在go语言中使用Denco包实现多路复用器实例

2023-06-01 00:00:00 语言 实例 多路

今天有点空,想测试一下Golang的几个网络复用器,我试过的最有趣的复用器之一是Denco包,它的使用相当简单,你可以通过denco.Params轻松获得发布的值。

用[]denco.Record类型也可以很容易地根据URL路径模式重定向到不同的函数。

见http://godoc.org/github.com/naoina/denco#Record


这个例子将集中在Denco的多路复用器部分,它是从下面denco包中例子并稍作修改。

https://github.com/naoina/denco


示例代码:

 package main
 
 import (
         "fmt"
         "github.com/naoina/denco"
         "net/http"
 )
 
 func Home(w http.ResponseWriter, r *http.Request, params denco.Params) {
         w.Write([]byte("Hello, World!"))
 }
 
 func HelloUser(w http.ResponseWriter, r *http.Request, params denco.Params) {
         w.Write([]byte(fmt.Sprintf("Hello, %s!", params.Get("name"))))
 }
 
 func main() {
         mx := denco.NewMux()
         
         handler, err := mx.Build([]denco.Handler{
                 mx.GET("/", Home),
                 mx.GET("/hellouser/:name", HelloUser),
                 mx.POST("/hellouser/:name", HelloUser),
         })
         
         if err != nil {
                 panic(err)
         }
         
         http.ListenAndServe(":8080", handler)
 }

输出:

http://localhost:8080/hellouser/Zongscan
Hello, Zongscan

相关文章