Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 135.3MB ·虚拟内存 1372.6MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
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: ...