api

module
v0.0.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 18, 2026 License: MIT

README

api 模块说明

概述

api 模块用于维护 protobuf 定义并生成 Go 代码。

  • proto 源码目录:api/proto
  • 生成代码目录:api/gen/go(当前配置生成到 api/gen/go/config/v1
  • buf 配置:api/buf.yamlapi/buf.gen.yamlapi/buf.lock

目录结构

api/
├── proto/              # proto 定义
│   └── config/v1/
├── gen/go/             # 生成结果(*.pb.go)
├── buf.yaml            # buf 模块与依赖配置
├── buf.gen.yaml        # 代码生成插件配置
└── buf.lock            # 依赖锁文件(自动生成)

依赖与工具

在仓库根目录执行:

make plugin
make cli

至少需要以下命令可用:

  • buf
  • protoc-gen-go
  • protoc-gen-go-grpc
  • protoc-gen-go-http
  • protoc-gen-go-errors

生成代码

在仓库根目录执行:

make api

等价命令:

cd api
buf generate

buf.gen.yaml 已配置:

  • managed.enabled: true
  • go_package_prefix: github.com/liujitcn/kratos-kit/api/gen/go
  • 输出路径:gen/go
  • 生成插件:gogo-grpcgo-httpgo-errors

更新 buf.lock

当你修改了 api/buf.yaml 中的 deps,或希望升级远程依赖版本时,执行:

cd api
buf dep update

说明:

  • buf.lock 由 buf 自动维护,不要手动编辑。
  • 更新后请一并提交 buf.lock

校验建议

生成前后建议执行:

cd api
buf lint
buf build
buf generate

回到仓库根目录执行:

go test ./...

Proto 引用约定

buf 模块根是 api/proto,因此在 proto 中引用同模块文件时,按模块内相对路径写 import,例如:

import "config/v1/tls.proto";

配置包约定

当前配置契约使用 config.v1 包,生成 Go 包路径为:

import configv1 "github.com/liujitcn/kratos-kit/api/gen/go/config/v1"

启动配置 configv1.Bootstrap 当前包含 serverclientdatatraceloggerregistryconfigossnotifyauthnauthzpprofai。AI 配置使用 configv1.AI,其中 AI.Model 与上游 kratos-bootstrap 的模型配置保持一致;旧的 Client.Llm 配置已移除。OAuth 配置使用独立的 configv1.OAuth,由 oauth.NewManager 直接按 providers 配置创建 Provider。

服务端配置 configv1.Server 当前包含 httpgrpcmcpsse 子配置;其中 mcp 用于描述新版 MCP 运行时配置,可表达 HTTPSSESTDIOIN_PROCESS 四种运行形态、监听地址、挂载路径、TLS、优雅关闭超时、keepalive、Streamable HTTP 与 Legacy SSE Handler 选项,也可通过 http_tools 将 Gin、net/http 或其他 HTTP 接口配置为 MCP Tool;sse 用于描述通用 SSE 服务端的监听地址、路由路径、编解码器、TLS、超时、事件 TTL 与自动流/自动回复等开关。

发布引用约定

api 子模块承载公共 proto 契约和生成代码。配置契约或下游依赖基线同步发布时,外部项目应优先锁定最新 api/v* tag,确保 config/v1 包路径、SSE 配置字段与生成代码保持一致。

Directories

Path Synopsis
gen

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL