go micro遇到问题记录

0 阅读2分钟

注意: 如果通过micro api命令启动api服务时,缺少参数--handler,那么在访问上面的地址时,会出现下面的响应结果
{ "id": "go.micro.api", "code": 500, "detail": "error during request: unknown field \"name\" in go_micro_api.Request", "status": "Internal Server Error" } ———————————————— 版权声明:本文为CSDN博主「benben_2015」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/benben\\_20…

注意
2.2 service not found 异常处理
这里我必须要强烈吐槽,本来根据micro new命令的经验,我第一时间就想到了上面的命令写法,但是当时在学习,很多博主东拼西凑的教程里,经常出现这样一种写法micro api --namespace=go.micro.service,你要是跟着这么写,web调用时就会看到:
{ "id": "go.micro.service.api", "code": 500, "detail": "service not found", "status": "Internal Server Error" }

image.png

实际上翻阅官方早期文档会发现,这种写法早就已经被namespace + type替代了。
如果你想用micro v2版建议下载代码编译生成micro文件
编译安装micro 执行1 cd GOPATH/src/github.com/micro/micro执行2gobuildomicromain.goGOPATH/src/github.com/micro/micro 执行2 go build -o micro main.go 把GOPATH/src/github.com/micro/micro 生成的micro文件copy到gopath下bin目录里面
sudo cp micro /bin/
因为默认下载是最新的可能是microv3
生成的xxx.micro.go文件也要看下自动生成的micro版本是否一致
micro 和gomicro版本也要保证一致
注意2
应该是版本有直接关系,我电脑以前安装运行的是v2版这次该v3
gomicroV3生成micro.pb遇到问题记录
1.首先安装官方文档下载
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get github.com/micro/micro/v3/cmd/protoc-gen-micro
生成或者配置相关对应如下后

image.png

image.png

生成一个简单的micro Demo是发现我本机需要加sudo 权限
操作例子如下:

image.png

image.png

这个是生成了一个工程
接着发现整个文件夹是只读权限包括xxx.proto也是

image.png

使用命令 生成对应的xxx.micro.pb文件报错, 并且看下原xxx.proto文件是
option go_package = "proto;to";后面修改后(例 option go_package = "/ddto";)
在xxx.proto文件所在目录执行命令 protoc --proto_path=$GOPATH/src:. --micro_out=. --go_out=. *.proto 可以正常生成了

image.png

发现microV2 用protoc --proto_path=. --go_out=. --micro_out=. *.proto 也可以生成micro.xx文件
注意坑 按照网上步骤安装后 执行micro new cc 创建一个微服务模板,出现下面情况,看看是在是不是在GOPATH 目录下执行的命令
(不是在该目录下或者默认是没有配置相关环境变量会出现情况)

image.png

image.png