logo
0
0
WeChat Login
windealli<windealli@tencent.com>
fix: 升级 Go 镜像版本到 1.24,匹配 go.mod 要求

Demo - Kratos SayHello Service

基于 Kratos 微服务框架的示例项目,使用 Protobuf 定义 API,提供一个简单的 SayHello 接口。

项目结构

demo/ ├── api/ # API 定义(Protobuf) │ └── helloworld/ │ └── v1/ │ ├── greeter.proto # Proto API 定义 │ ├── greeter.pb.go # 生成的 message 代码 │ ├── greeter_grpc.pb.go # 生成的 gRPC 代码 │ └── greeter_http.pb.go # 生成的 HTTP 代码(Kratos) ├── cmd/ # 程序入口 │ └── demo/ │ └── main.go ├── configs/ # 配置文件 │ └── config.yaml ├── internal/ # 内部逻辑(不对外暴露) │ ├── biz/ # 业务逻辑层 │ │ ├── biz.go │ │ └── greeter.go │ ├── conf/ # 配置结构定义 │ │ └── conf.go │ ├── data/ # 数据访问层 │ │ ├── data.go │ │ └── greeter.go │ ├── server/ # 服务层(HTTP/gRPC) │ │ ├── server.go │ │ └── http.go │ └── service/ # 服务实现层 │ ├── service.go │ └── greeter.go ├── third_party/ # 第三方 Proto 依赖 │ └── google/ │ ├── api/ │ │ ├── annotations.proto │ │ └── http.proto │ └── protobuf/ │ └── descriptor.proto ├── go.mod ├── go.sum ├── Makefile ├── Dockerfile ├── .gitignore └── README.md

快速开始

环境要求

  • Go 1.22+
  • protoc(Protocol Buffers 编译器)
  • protoc-gen-go / protoc-gen-go-grpc / protoc-gen-go-http

安装 protoc 插件

make init

生成 Proto 代码

make api

安装依赖

go mod download

运行服务

go run ./cmd/demo # 或 make run

服务将在以下地址启动:

  • HTTP: http://localhost:8000

测试 API

# GET 请求 curl "http://localhost:8000/helloworld/greeting?name=kratos" # POST 请求 curl -X POST "http://localhost:8000/helloworld/greeting" \ -H "Content-Type: application/json" \ -d '{"name": "kratos"}'

响应示例:

{ "message": "Hello kratos!" }

API 定义

API 通过 Protobuf 定义在 api/helloworld/v1/greeter.proto

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) { option (google.api.http) = { get: "/helloworld/greeting" additional_bindings { post: "/helloworld/greeting" body: "*" } }; } }
方法路径说明
GET/helloworld/greeting?name=SayHello 问候接口
POST/helloworld/greetingSayHello 问候接口

构建

# 完整构建(生成 proto + 整理依赖 + 编译) make all # 仅编译 make build # Docker 构建 docker build -t demo:latest .

技术栈

  • 框架: Kratos v2
  • 语言: Go 1.22+
  • API 定义: Protocol Buffers + google.api.http
  • 传输协议: HTTP(可扩展 gRPC)

参考文档

About

No description, topics, or website provided.
Language
Go77.6%
Makefile18.1%
Dockerfile4.3%