GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究

发布时间:2024年01月15日

官方文档api-demo教程部分网址如下:

api demo 代码生成 | go-zero Documentation

官方demo的架构如下:

image.png编辑

etc包下:

demo-api.yaml

image.png编辑
服务名称:demo-api
HOST地址:0.0.0.0监听所有可用网络接口
Port地址:服务运行在8888端口

internal包下:

config/config.go

image.png编辑
存储config信息,这里rest.RestConf是RESTful API的结构体,此外还可以添加数据库,缓存配置信息

handler/demohandler.go

image.png编辑
输入SvcContext(后面自己定义),返回HandlerFunc函数
三个过程:
解析request的类型,解析错误,返回error(下图为httpx.ErrorCtx源码)
image.png编辑
l := logic.NewDemoLogic(r.Context(), svcCtx)的相关代码是我们后面自己定义,
l.Demo实际上充当了业务逻辑的处理过程
失败,返回报错,成功,则带上OK(200状态码)返回

handler/routes.go

image.png编辑
这个文件夹的代码由goctl自动生成,注册路由,方法是get,路径是/from/:name(:name代表路径有一个名为name的参数,在后面定义了这个name类型的参数)
[]rest.Route代表了该类型的切片,包含了定义路由的那个结构体

logic/demologic.go

image.png编辑在demhandler中用到的代码
DemoLogic结构体:logger(用于记录日志),ctx(请求的上下文信息),svcCtx(服务相关的信息,数据库连接,缓存实例)
NewDemoLogic就是用于New一个DemoLogic实例
Demo方法就是处理request,构造response的方法,具体的业务逻辑代码
type是后面定义的

svc/servicecontext.go

image.png
用途是通过创建svcCtx来访问config字段,套娃,增强代码的解藕性

types/types.go

image.png
goctl自动生成,request和response结构体长得样子
name类型被定义,可选为you或者me

demo.api

image.png
生成routes.go和types.go的文件依据,注册api处理的handler
采用proto3语法(一种数据交换格式)

demo.go

image.png
主文件,有如下步骤

  • 解析命令行参数
  • 加载配置文件到结构体c中
  • 新建一个rest服务器实例
  • 创建服务上下文。注册handler处理函数
  • 启动rest服务器

启动服务

image.png
测试
image.png
与预期结果相符合

文章来源:https://blog.csdn.net/m0_63629756/article/details/135603906
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。