printfcoder/stack-rpc-tutorials

API meta 模式在 go-micro v1.16 下无法食用

linwenchao opened this issue · 1 comments

如题,basic-pratices/micro-api/meta/ 在v1.15下运行正常,
但代码不变,换用go-micro v1.16后启动服务报错

panic: assignment to entry in nil map

goroutine 1 [running]:
github.com/micro/go-micro/server.newRpcHandler(0x4a20700, 0xc0000c29c0, 0xc0000c29a0, 0x2, 0x2, 0x538b601, 0xc0000c29c0)
        /Users/jimmy/go/pkg/mod/github.com/micro/go-micro@v1.16.0/server/rpc_handler.go:36 +0x40c
github.com/micro/go-micro/server.(*router).NewHandler(...)
        /Users/jimmy/go/pkg/mod/github.com/micro/go-micro@v1.16.0/server/rpc_router.go:389
github.com/micro/go-micro/server.(*rpcServer).NewHandler(0xc000144140, 0x4a20700, 0xc0000c29c0, 0xc0000c29a0, 0x2, 0x2, 0x49d29a0, 0xc0001ecb01)
        /Users/jimmy/go/pkg/mod/github.com/micro/go-micro@v1.16.0/server/rpc_server.go:373 +0x5a

另想请教,如果使用api handler,是否有方法定制访问url?例如,有类似meta中的Endpoint path吗?
如果想向外暴露类似rest的api接口,就只能用proxy / http handler了?
多谢 🙏

一般Micro和Go-Micro要版本配合,所以请更新Micro到最新版本,也请帮我们更新一下mod文件。

api handler的URL和后台服务是有映射关系的,路径会严格映射,/serviceName/method类似的解析协议,这个目前无法自定义,也没有必要去维护自定义的关系,如果需要可以自行修改映射逻辑,再编译。

对外暴露可以走API也可以走web应用。