Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用

前言

Go语言凭借低占用,高并发等优秀特性成为后台编程语言的新星,GoZero框架由七牛云技术副总裁团队编写,目前已经成为Go微服务框架里star数量最多的框架

本文记录讲述笔者一步步走通前台向后台发出请求,后台api调用rpc服务的相关方法,然后执行代码返回结果,再由api返回结果给前台的过程,具体采用restful风格请求,内容上还包括了对数据库进行goctl代码生成以及自定义方法编写

本文侧重于rpc,api部分,前面部分内容附上了我的博客链接,内有详细解释,本文将精简掠过

目的

实现前台从后台获取公告内容

流程

建表

对于建表没有太多要说的,只需要注意我这篇文章提到的

GoZero的一个注意点,goctl生成代码不会处理时间字段-CSDN博客

goctl生成的model代码处理时间字段或者是时间格式字段的代码同其他字段有些区别,最简单的实践是让数据库控制insert update时间

goctl生成model代码

goctl是go-zero框架的重要工具,可以直接从数据库生成model代码

model代码包含了基本的一张表的增删改查方法,同时提供了方法让我们自己定义方法

具体内容可以看我写的这篇文章

GoZero微服务个人探究之路(八)-[mysql数据库]如何拓展由goctl生成的model代码里的方法-CSDN博客

编写proto文件

proto文件是go-zero生成rpc代码的重要文件,内有对请求request,response的定义,以及服务,请求方法定义,语法遵循谷歌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代码无需再次修改,但也可以选择添加自己的一些逻辑

至此整套流程衔接跑通

相关推荐
喂完待续2 小时前
【序列晋升】28 云原生时代的消息驱动架构 Spring Cloud Stream的未来可能性
spring cloud·微服务·云原生·重构·架构·big data·序列晋升
jzzy_hony2 小时前
云原生:微服务与Serverless指南
微服务·云原生·serverless
夫子3962 小时前
OnlyOffice的高可用方案如何做
运维·架构
欧阳的棉花糖3 小时前
微前端俯瞰
微服务·前端工程化
薛定谔的算法3 小时前
手写React:从Dideact理解前端框架的核心原理
前端·react.js·架构
bantinghy3 小时前
RPC内核细节(转载)
linux·服务器·网络·网络协议·rpc
掘金-我是哪吒3 小时前
分布式微服务系统架构第170集:Kafka消费者并发-多节点消费-可扩展性
分布式·微服务·架构·kafka·系统架构
胡耀超6 小时前
大模型架构演进全景:从Transformer到下一代智能系统的技术路径(MoE、Mamba/SSM、混合架构)
人工智能·深度学习·ai·架构·大模型·transformer·技术趋势分析
小马哥编程14 小时前
【软考架构】第七章 系统架构设计基础知识-7.2基于架构的软件开发方法:Architecture-Based Software Design,ABSD
架构·系统架构
西陵14 小时前
Nx带来极致的前端开发体验——任务编排
前端·javascript·架构