如何用自己的电脑做网站空间,海南建设银行官方网站,化工建网站多少费用,什么服装网站做一件代发前言
Go语言凭借低占用#xff0c;高并发等优秀特性成为后台编程语言的新星#xff0c;GoZero框架由七牛云技术副总裁团队编写#xff0c;目前已经成为Go微服务框架里star数量最多的框架
本文记录讲述笔者一步步走通前台向后台发出请求#xff0c;后台api调用rpc服务的相…前言
Go语言凭借低占用高并发等优秀特性成为后台编程语言的新星GoZero框架由七牛云技术副总裁团队编写目前已经成为Go微服务框架里star数量最多的框架
本文记录讲述笔者一步步走通前台向后台发出请求后台api调用rpc服务的相关方法然后执行代码返回结果再由api返回结果给前台的过程具体采用restful风格请求内容上还包括了对数据库进行goctl代码生成以及自定义方法编写
本文侧重于rpcapi部分前面部分内容附上了我的博客链接内有详细解释本文将精简掠过
目的
实现前台从后台获取公告内容
流程
建表
对于建表没有太多要说的只需要注意我这篇文章提到的
GoZero的一个注意点goctl生成代码不会处理时间字段-CSDN博客 goctl生成的model代码处理时间字段或者是时间格式字段的代码同其他字段有些区别最简单的实践是让数据库控制insert update时间
goctl生成model代码
goctl是go-zero框架的重要工具可以直接从数据库生成model代码
model代码包含了基本的一张表的增删改查方法同时提供了方法让我们自己定义方法
具体内容可以看我写的这篇文章
GoZero微服务个人探究之路(八)-[mysql数据库]如何拓展由goctl生成的model代码里的方法-CSDN博客
编写proto文件
proto文件是go-zero生成rpc代码的重要文件内有对请求requestresponse的定义以及服务请求方法定义语法遵循谷歌proto3语法
同时也有一些坑可以参照我的这篇博客
GoZero goctl报错“google.protobuf.Timestamp“ is not defined.以及google/protobuf/empty.proto无法导入proto3-CSDN博客
节省篇幅我们主要讲述走通获取全部公告需要做什么 如上我们定义好了请求结构请求的response结构并把get所有公告这一方法分组在service内
之后我们需要用goctl生成代码
rpc代码完善
接下来第一件事为我们的微服务的svcContext内添加model的引用 这样我们就可以在logic代码内调用我们自定义的或者是goctl生成的增删改查代码并构建结果返回 之后我们还需要在启动文件内main文件注册好我们proto文件定义的服务 至此rpc的流程结束
api代码完善和rpc衔接
首先我们要定义api文件这是go-zero特有的文件goctl通过这个文件来生成代码
api文件代码编写可以遵循这篇博客
GoZero微服务个人探究之路九api文件编写总结-CSDN博客 同样的我们构造好请求request结构reponse结构并且定义请求路径以及handler并分配到service内
之后我们采用goctl生成代码
然后我们需要在serviceContext内补充我们刚刚写好的服务
1.在结构体内新增service条目 2.在NewServiceContext返回实例内实例化service
和在rpc内增加对model的引用类似
之后我们需要对logic包内代码编写具体需要在类似这个函数内补充代码 调用我们前面rpc的service已经定义好了的方法然后构造HTTP请求结果返回
一般来说goctl生成的handler代码无需再次修改但也可以选择添加自己的一些逻辑
至此整套流程衔接跑通