转载自:# go-zero docker-compose 搭建课件服务(一):编写服务api和proto
1、创立我的项目目录
mkdir go-zero-coursewarecd go-zero-courseware
2、装置goctl
# 装置GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest# mac放到/usr/local/bin/上面ln -s ~/go/bin/goctl /usr/local/bin/goctl# 校验goctl -vgoctl version 1.4.0 darwin/amd64 # 看到版本阐明装置胜利
3、创立服务
创立服务目录
mkdir -p user/apimkdir -p user/rpcmkdir -p courseware/apimkdir -p courseware/rpc
创立user.api、courseware.api、user.proto、courseware.proto
touch user/api/user.apitouch user/rpc/user.prototouch courseware/api/courseware.apitouch courseware/rpc/courseware.proto
4、编写user.api、user.proto
type ( // 登录 LoginRequest { LoginName string `json:"loginName"` Password string `json:"password"` } LoginResponse { Id uint64 `json:"id"` Token string `json:"token"` } // 注册 RegisterRequest { LoginName string `json:"loginName"` Username string `json:"username"` Password string `json:"password"` Sex uint64 `json:"sex"` } RegisterResponse { } // 用户信息 UserInfoRequest { Id uint64 `json:"id"` } UserInfoResponse { Id uint64 `json:"id"` Username string `json:"username"` LoginName string `json:"loginName"` Sex uint64 `json:"sex"` })service user { @handler userLogin post /api/user/login (LoginRequest) returns (LoginResponse) @handler userRegister post /api/user/register (RegisterRequest) returns (RegisterResponse) @handler userInfo post /api/user/userInfo (UserInfoRequest) returns (UserInfoResponse)}
syntax = "proto3";package user;option go_package = "./user";// 登录message LoginRequest { string LoginName = 1; string Password = 2;}message LoginResponse { uint64 Id = 1; string Token = 2;}// 注册message RegisterRequest { string LoginName = 1; string Username = 2; string Password = 3; uint64 Sex = 4;}message RegisterResponse {}// 用户信息message UserInfoRequest { uint64 Id = 1;}message UserInfoResponse { uint64 Id = 1; string Username = 2; string LoginName = 3; uint64 Sex = 4;}service User { rpc Login(LoginRequest) returns(LoginResponse); rpc Register(RegisterRequest) returns(RegisterResponse); rpc UserInfo(UserInfoRequest) returns(UserInfoResponse);}
5、编写courseware.api、courseware.proto
type ( // 新增 AddRequest { Code string `json:"code"` Name string `json:"name"` Type uint64 `json:"type"` } AddResponse { } // 更新 UpdateRequest { Id uint64 `json:"id"` Code string `json:"code"` Name string `json:"name"` Type uint64 `json:"type"` } UpdateResponse { } // 查看 GetRequest { Id uint64 `json:"id"` } GetResponse { Id uint64 `json:"id"` Code string `json:"code"` Name string `json:"name"` Type uint64 `json:"type"` } // 删除 DeleteRequest { Id uint64 `json:"id"` } DeleteResponse { })service courseware { @handler coursewareAdd post /api/courseware/add (AddRequest) returns (AddResponse) @handler coursewareUpdate post /api/courseware/update (UpdateRequest) returns (UpdateResponse) @handler coursewareGet post /api/courseware/get (GetRequest) returns (GetResponse) @handler coursewareDelete post /api/courseware/delete (DeleteRequest) returns (DeleteResponse)}
syntax = "proto3";package user;option go_package = "./courseware";// 新增message AddRequest { string Code = 1; string Name = 2; uint64 Type = 3;}message AddResponse {}// 更新message UpdateRequest { uint64 Id = 1; string Code = 2; string Name = 3; uint64 Type = 4;}message UpdateResponse {}// 查看message GetRequest { uint64 Id = 1;}message GetResponse { uint64 Id = 1; string Code = 2; string Name = 3; uint64 Type = 4;}// 删除message DeleteRequest { uint64 Id = 1;}message DeleteResponse {}service Courseware { rpc Add(AddRequest) returns(AddResponse); rpc Update(UpdateRequest) returns(UpdateResponse); rpc Get(GetRequest) returns(GetResponse); rpc Delete(DeleteRequest) returns(DeleteResponse);}