golang 微服务开发实例

以下是一个简单的 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 微服务开发实例。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值