Go Micro 创建 Web
Go Micro 是一个插件化的 RPC 开发框架,用于使用 Go 语言快速构建微服务。
我们可以使用 Go Micro 的 micro 工具创建 Web 服务。例如,创建 hello Web 服务:
micro new --type=web hello
以下是 micro 创建的 Web 服务:
package main import ( "github.com/micro/go-micro/util/log" "github.com/micro/go-micro/web" "net/http" ) func main() { // 创建一个新的服务,服务名为 go.micro.srv.hello service := web.NewService( // 服务名:go.micro.api.user web.Name("go.micro.api.user"), // 元信息:使用 http 协议 web.Metadata(map[string]string{"protocol": "http"}), // 服务地址:端口号为 8081 web.Address(":8081"), ) // 通过命令行参数或者插件初始化服务 service.Init() // /user 路由处理函数 service.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(`{"msg":"user api"}`)) }) // 运行服务 if err := service.Run(); err != nil { log.Fatal(err) } }
注意:不要忘记补全 web.Metadata(map[string]string{"protocol": "http"}) 。
我们可以使用 curl 测试结果:
curl http://localhost:8081/user
或者直接在浏览器中,输入 http://localhost:8081/user。输出结果为:
{"msg":"user api"})
我们还可以集成 gin 作为路由,有关 gin 的使用可以参照 gin框架 教程。
package main import ( "github.com/gin-gonic/gin" "github.com/micro/go-micro/util/log" "github.com/micro/go-micro/web" "net/http" ) func main() { // 创建 gin 路由 r := gin.Default() r.GET("/user", func(c *gin.Context) { c.JSON(http.StatusOK, map[string]string{ "msg": "user api", }) }) // 创建一个新的服务,服务名为 go.micro.srv.hello service := web.NewService( // 服务名:go.micro.api.user web.Name("go.micro.api.user"), // 元信息:http 协议 web.Metadata(map[string]string{"protocol": "http"}), // 服务地址 web.Address(":8081"), // 使用gin路由 web.Handler(r), ) // 通过命令行参数或者插件初始化服务 service.Init() // 运行服务 if err := service.Run(); err != nil { log.Fatal(err) } }
Go Micro 是一个插件化的 RPC 开发框架,用于使用 Go 语言快速构建微服务。测试 Go Micro Web 服务可以使用 curl,比如测试 http://localhost:8081/user: ...