首页 > 其他分享 >go学习笔记——Kratos框架

go学习笔记——Kratos框架

时间:2024-05-09 22:11:40浏览次数:20  
标签:kratos proto make 笔记 api helloworld go Kratos

官方文档

https://go-kratos.dev/en/docs/getting-started/start/

1.安装Go

参考:mac安装go1.20

2.安装Kratos框架

kratos依赖protobuf grpc等框架,需要先进行安装

brew install grpc
brew install protobuf
brew install protoc-gen-go
brew install protoc-gen-go-grpc

验证

protoc --version
protoc-gen-go --version
protoc-gen-go-grpc --version

安装kratos框架

go install github.com/go-kratos/kratos/cmd/kratos/v2@latest

3.创建项目

# 创建项目
kratos new helloworld
# 也可以指定仓库
kratos new helloworld -r https://gitee.com/go-kratos/kratos-layout.git

编译项目

cd helloworld

# 安装依赖
make init

# 生成wire依赖注入
go generate ./...
# 或者使用make
make generate

# 生成bin执行文件
go build -o ./bin/ ./...
# 或者使用make
make build

# 运行
./bin/helloworld -conf ./configs
或者
kratos run

# 测试
curl 'http://127.0.0.1:8000/helloworld/kratos'
{"message":"Hello kratos"}%

项目结构

Kratos项目如果想要使用debug模式来运行

需要将run kind从File修改成Directory,并指定Directory为main.go和wire_gen.go所在的目录,否则会报

# command-line-arguments
./main.go:77:23: undefined: wireApp

同时还需要额外指定conf文件的路径,否则会报

panic: stat ../../configs: no such file or directory

配置如下

或者修改成package,指定成package path

debug成功

如果想要添加额外的API,需要先添加proto文件

kratos proto add api/helloworld/demo.proto

编译proto文件生成model和grpc代码

kratos proto client api/helloworld/demo/demo.proto

或者使用make命令

make api

注意make api命令无法生成validate验证代码,需要额外使用make validate命令,但是kratos proto client命令是可以的

参考:https://go-kratos.dev/docs/component/middleware/validate/

生成service模板代码

kratos proto server api/helloworld/demo/demo.proto -t internal/service

参考文档:从0到1安装启动Kratos框架https://go-kratos.dev/en/docs/getting-started/usage

4.Example项目

https://github.com/go-kratos/examples

 

标签:kratos,proto,make,笔记,api,helloworld,go,Kratos
From: https://www.cnblogs.com/tonglin0325/p/18183178

相关文章

  • 力学笔记
    无滑滚动假设有拉力\(F\)以及摩擦力\(F_f\),圆柱体无滑滚动(\(a=\alphaR\)),下面讨论其动能变化由质心运动定理:\[F-F_f=ma\]由刚体定轴转动的转动定理:\[(F+F_f)R=I_c\alpha\]可得:\[a=\frac{2F}{m+\frac{I_c}{R^2}}\]故刚体动能为:\[\begin{aligned}E_k&=\frac{1}{2}mv^2+\f......
  • 力扣刷题笔记-21 合并两个有序链表
    其实不回答就是答案双指针classSolution{publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){ListNodedummy=newListNode(-1);ListNodep=dummy;ListNodep1=list1,p2=list2;while(p1!=null&&p2!=nu......
  • 01-Excel基础操作-学习笔记
    01选择性粘贴一般的复制粘贴,可以直接使用快捷键Ctrl+C复制,Ctrl+V粘贴。但是在工作场景中,这样简单的复制粘贴远远不能满足需要。因此,学习了这个选择性粘贴工具。选择性粘贴工具在哪里?选中单元格区域——复制——鼠标右击——选择性粘贴应用场景一:要求保留原有格式,不......
  • 读《如何高效学习》[加] 斯科特·扬 笔记
    序言第一部分整体性学习策略1获取(1)简化(2)容量(3)速度2理解3拓展深度拓展横向拓展纵向拓展4纠错5应用测试信息结构随意信息观点信息过程信息具体信息抽象信息第二部分整体性学习技术获取知识快速阅读混合型笔记流联系观点比喻(类比)情景化图表法随意信......
  • 深入理解Django:中间件与信号处理的艺术
    title:深入理解Django:中间件与信号处理的艺术date:2024/5/918:41:21updated:2024/5/918:41:21categories:后端开发tags:Django中间件信号异步性能缓存多语言引言在当今的Web开发领域,Django以其强大的功能、简洁的代码结构和高度的可扩展性,已成为众多开......
  • 前后端数据交互形式随手笔记
    注解@RequestParamMap<String,String>params的使用 1在SpringMVC中,使用@RequestParamMap<String,String>params可以接收前端发出的请求参数并将它们作为一个Map收集起来。这种方式非常灵活,可以处理来自前端的各种数据提交形式。以下是一些常见的前端数据发送方式,它们......
  • 高并发秒杀项目随手笔记
    1数据库基字符集为什么选择utf8mb4? 2在MyBatis中,JavaBean属性名和数据库字段名的映射非常关键,正确设置这一映射是保证数据正确封装到JavaBean中的前提。以下是MyBatis映射机制的详细解释:1.默认映射行为如果在MyBatis的<resultMap>中没有明确指定映射关系,MyBa......
  • Maven随手笔记
    1当同时存在多个maven软件时,在windows上要如何区分? 查看当前使用的是哪个maven的指令,mvn-vC:\Users\yangd>mvn-vApacheMaven3.6.3(cecedd343002696d0abb50b32b541b8a6ba2883f)Mavenhome:D:\Java_developer_tools\Must_learn_must_know_technology\MavenProgram\apache......
  • MyBatis-Plus随手笔记
    1使用MyBatisPlus插件来自动化创建从数据库表生成相应的实体类User和映射文件。这一过程的说明说明;根据数据库表生成对应的基本的crud代码和Entity类,可以参考renren代码生成器,以前在hspliving分布式项目中使用过!参考老韩在hspliving-commodity中crud代码的自动生成过程视频,......
  • Redis随手笔记
    1内存(RAM)和磁盘(如HDD或SSD)的读写速度差异内存(RAM)和磁盘(如HDD或SSD)的读写速度差异很大,这是因为它们基于完全不同的技术和物理原理。内存的访问速度远快于磁盘。内存(RAM):数据是直接在CPU可以快速访问的内存芯片上进行读写的。内存访问的延迟通常在几十纳秒(ns)范围内,数据传输速率......