以下是一个简单的 golang 微服务开发实例:
首先,我们需要安装 gin 和 go-micro 库:
go get -u github.com/gin-gonic/gin
go get -u github.com/micro/go-micro
接下来,定义一个简单的服务:
package main
import (
"context"
"github.com/gin-gonic/gin"
"github.com/micro/go-micro"
"github.com/micro/go-micro/server"
pb "github.com/micro/services/helloworld/proto"
)
// 实现 HelloServiceHandler 接口
type HelloService struct{}
func (h *HelloService) SayHello(ctx context.Context, req *pb.HelloRequest, rsp *pb.HelloResponse) error {
rsp.Greeting = "Hello, " + req.Name + "!"
return nil
}
// 定义微服务
func main() {
service := micro.NewService(
micro.Name("go.micro.service.helloworld"),
micro.Server(server.NewServer(server.Name("gin"))),
micro.Version("latest"),
)
service.Init()
// 创建启动 gin 的方法
ginHandler := gin.Default()
ginHandler.GET("/hello/:name", func(c *gin.Context) {
name := c.Param("name")
client := pb.NewHelloService("go.micro.service.helloworld", service.Client())
rsp, err := client.SayHello(context.TODO(), &pb.HelloRequest{
Name: name,
})
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"message": rsp.Greeting})
})
// 注册服务
if err := service.Server().Handle(service.Server().NewHandler(ginHandler)); err != nil {
panic(err)
}
// 启动服务
if err := service.Run(); err != nil {
panic(err)
}
}
在上面的代码中,我们定义了一个 HelloService,实现了 SayHello 方法。
然后我们创建了一个 gin 的路由,路由 /hello/:name 会调用 SayHello 方法,返回一个包含问候语的 JSON 响应。
最后,我们将 gin 路由注册到微服务中,并启动服务。
现在我们可以运行该服务:
go run main.go
在浏览器中访问 http://localhost:8080/hello/world,你将会看到以下 JSON 响应:
{ "message": "Hello, world!" }
以上就是一个简单的 golang 微服务开发实例。