这篇文章主要讲解了“go-zero单体服务使用泛型简化注册Handler路由的问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go-zero单体服务使用泛型简化注册Handler路由的问题怎么解决”吧!下载并安装Go for Mac验证安装结果下载Go for Linux解压压缩包至/usr/local添加/usr/local/go/bin到环境变量验证安装结果下载并安装Go for Windows验证安装结果Go Module是Golang管理依赖性的方式,像Java中的Maven,Android中的Gradle类似。查看GO111MODULE开启情况开启GO111MODULE,如果已开启(即执行go env GO111MODULE结果为on)请跳过。设置GOPROXY设置GOMODCACHE查看GOMODCACHE如果目录不为空或者/dev/null,请跳过。Goctl在go-zero项目开发着有着很大的作用,其可以有效的帮助开发者大大提高开发效率,减少代码的出错率,缩短业务开发的工作量,更多的Goctl的介绍请阅读Goctl介绍安装(mac&linux)安装(windows)环境变量检测(mac&linux)
go get 下载编译后的二进制文件位于 $GOPATH/bin 目录下,要确保 $GOPATH/bin已经添加到环境变量。在最后一行添加如下内容 //$GOPATH 为你本机上的文件地址安装结果验证快速生成 api 服务默认侦听在 8888 端口
侦听端口可以在greet-api.yaml
配置文件里修改,此时,可以通过 curl 请求,或者直接在浏览器中打开http://localhost:8888/from/you
greet服务的目录结构RegisterHandlers在internalhandlerroutes.go
中GreetHandler在internalhandlergreethandler.go
中在路由注册时,我们如果服务越加越多,那么相对应的func xxxxHandler(ctx *svc.ServiceContext) http.HandlerFunc
就要进行多次的添加,并且免费云主机域名这个方法体内部1到5行是属于额外的重复添加
例如:我们添加一个customlogic.go
按照命名的正确和规范性,需要在internallogic
目录下添加customlogic.go文件,然后在internalhandler
目录下添加customhandler.go文件,并且两个文件都添加相对应的结构体和函数等,最后在routes.go
中再添加一次此时,我们的文件结构应该是这样当单体应用达到一定的数量级,handler和logic文件夹下将会同步增加很多的文件自Go1.18开始,go开始使用泛型,泛型的广泛定义 :是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。 也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,而这种参数类型可以用在 类、方法和接口 中,分别被称为 泛型类 、 泛型方法 、 泛型接口 。
我们可以利用泛型,让在添加路由时就要固定死的Handler: GreetHandler(serverCtx)
推迟到后面,去根据实际的Logic结构体去判断需要真正执行的logic.NewGreetLogic(r.Context(), ctx)
初始化结构体和l.Greet(req)
逻辑处理方法如何去做在internallogic
下添加一个baselogic.go
文件,参考Go泛型实战 | 如何在结构体中使用泛型将greethandler.go
文件修改成basehandler.go
,注释掉之前的GreetHandler
方法在internallogicgreetlogic.go
中增加一个Handler
方法然后修改internalhandlerroutes.go
下面的server.AddRoutes
部分现在就大功告成了,我们启动一下然后在浏览器中请求一下http://localhost:8888/from/you
然后修改internalhandlerroutes.go
其他地方不需要修改
我们启动一下然后在浏览器中请求一下http://localhost:8888/from/you
、http://localhost:8888/to/you
、http://localhost:8888/too/you
现在,在添加新的logic做路由映射时,就可以直接简化掉添加xxxxhandler.go
文件了,实际上是将这个Handler移动到了xxxxlogic.go中。感谢各位的阅读,以上就是“go-zero单体服务使用泛型简化注册Handler路由的问题怎么解决”的内容了,经过本文的学习后,相信大家对go-zero单体服务使用泛型简化注册Handler路由的问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!
本篇内容主要讲解“C语言如何实现简单的贪吃蛇游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语免费云主机域名言如何实现简单的贪吃蛇游戏”吧!到此,相信大家对“C语言如何实现简单的贪吃蛇游戏”有了更深的了解,不妨…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。