Smart API and RPC service based on Kratos T
-
Check GO111MODULE
$ go env GO111MODULE on
-
Turn on GO111MODULE
$ go env -w GO111MODULE="on" -
Setting GOPROXY
$ go env -w GOPROXY=https://goproxy.cn
-
Check GOMODCACHE
$ go env GOMODCACHE
Setting go mod cache directory
go env -w GOMODCACHE=$GOPATH/pkg/mod
-
Check enviroment
Download kratos to $GOPATH/bin.
-
Download and install
go get -u github.com/go-kratos/kratos/cmd/kratos/v2@latest
Download from protobuf release, unzip protoc to $GOPATH/bin.
go get -u github.com/golang/protobuf/protoc-gen-go
Move protoc-gen-go to $GOPATH/bin.
# mkdir demo # create project's layout kratos new demo cd demo # modify go.mod module if needed, then pull dependencies go mod download go mod tidy # init enviroment make init # generate all codes make all # build make build # run make run # or run # ./bin/helloworld -conf ./configs # try it out now curl 'http://127.0.0.1:8000/helloworld/kratos' # The response should be { "message": "Hello kratos" }
# generate proto template kratos proto add api/blog/v1/blog.proto # modify the proto template if needed # generate proto code # kratos proto client api/blog/v1/blog.proto # if no http created, then try following cmd # kratos proto client api/blog/v1/blog.proto --go-http_opt=omitempty=false # generate all new codes make all # generate server template #kratos proto server api/blog/v1/blog.proto -t internal/service
-
install ent
go get entgo.io/ent/cmd/ent
-
create schemas
cd internal/data # Create User Schema file under ./ent/schema/ directory, or create schema file manually # Notice: should create file generate.go under ./ent, and include 'package ent' # go run entgo.io/ent/cmd/ent init User # Generate all schemas go generate ./ent
|----cmd
| |
| |----project
| |
| |----main.go
| |
| |----wire.go
|
|----api
| |
| |----project
| |
| |----*.proto
|
|----internal
| |
| |----biz
| |
| |----conf
| | |
| | |----*.proto
| |
| |----data
| | |
| | |----ent
| | |
| | |----schema
| |
| |----server
| |
| |----service
|
|-----Makefile