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

官方文档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
与预期结果相符合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/322818.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XSKY助力首个云原生、分布式、全栈国产化银行核心系统投产上线

近日,。该项目是业内首个实际投产的云原生、分布式、全栈国产化的银行核心业务系统,是金融科技领域突破关键核心技术应用的重大实践。 在杭州银行的新一代核心系统中,XSKY星辰天合具备天合翔宇“一池多芯”技术的对象存储支持了核心业务模块…

每日一题 82. 删除排序链表中的重复元素 II(中等,链表)

和昨天差不多,今天的是把所有重复数字的节点都删除(昨天留了一个) 显然当我们发现重复数字时,需要重复的第一个数字的前一个节点才能把重复数字删完,所有在while循环中我们每次判断 t.next 和 t.next.next 的值是否重复…

AI模型理解误区:微调垂直行业-VS-企业专属知识库或AI助理

概述 企业定制私有化大模型的区别,分为训练大模型和调用大模型两种方向,以及企业自己的智能客服的实现方法。 - 企业定制的私有化大模型与一般的大模型不同,需要高成本训练。- 企业可以选择调用已经训练好的大模型来应用。- 企业可以使用向量…

Zabbix监控(1)

目录 一.什么是zabbix Zabbix 组件: 主动模式: 被动模式: Zabbix 工作原理: zabbix 监控原理: 二.Zabbix 6.0 部署 先安装nginx,php(yum源安装): 安装nginx&…

【面试突击】Java内存模型实战

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

python的包argparse介绍

argparse是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分。 1、未使用argparse: import math# 计算圆柱体的体积 def cal_vol(radius,height):vol math.pi * pow(radius,2) * heightreturn vol if __name____main__:print(cal_vol(2,4))2、使用…

Model:字符串列表模型QStringListModel

一、QStringListModel (1)功能:处理字符串列表的数据模型,可作为QListView的数据模型,在界面上显示和编辑字符串列表。 二、QStringListModel 类中的函数 1)、 QStringListModel(QObject *parent Q_NULLPTR) //构造函…

FairyGUI Day 1 导入FairyGUI

FairyGUI Unity3d引擎版本:Uinty3d 20233.2.3f1 1、从资产商店中将FairyGUI购入我的资产中,目前是免费的。 2、从我的资产中将FairyGUI导入到当前项目中。 3、我遇到的问题,我的Assets下有两个文件夹分别是Resources和Scenes,导…

滑动登陆注册同页面

这是一个登陆注册在同一个页面滑动选择的页面 技术&#xff1a;html、css、javascript 简单页面实现&#xff08;为了方便&#xff0c;已将代码放在同一文件引用&#xff09;&#xff1a; 1.1、效果图 1.2、完整代码&#xff1a; <!DOCTYPE html> <html lang"…

金融行业有哪些客户管理系统值得推荐?金融CRM系统选型

市场形式波诡云谲&#xff0c;金融行业也面临着资源体系分散、竞争力后继不足、未知风险无法规避等问题。金融企业该如何解决这些问题&#xff0c;或许可以了解一下Zoho CRM管理系统&#xff0c;和其提供的金融行业CRM解决方案。金融CRM系统可以智能化客户筛选、整合各个资源体…

text、icon、progress、rich-text等基础内容小部件(Widget)组件代码明细

属性说明和代码明细如下&#xff1a; text 文本。 属性说明 属性名类型默认值必填说明user-selectbooleanfalse否文本是否可选&#xff0c;该属性会使文本节点显示为 inline-block 示例代码 TYML <view class"text-page"><view class"page-body…

统计学-R语言-2.2

文章目录 前言导入.RData文件方式1方式2方式3 导入程序包方式一方式二 总结 前言 本篇文章是将上篇得软件安装完&#xff0c;对其部分功能进行介绍。 导入.RData文件 在我们日常练习时会有.RData文件导入&#xff0c;并对其进行分析&#xff0c;下面是两种方导入.RData文件。…

通义千问协助分析openHarmony内核编译故障记录

drivers/hdf/khdf/manager/../../../..//framework/utils/src/hdf_sbuf.c:271:6: 错误&#xff1a; ‘-mgeneral-regs-only’ is incompatible with floating-point argument 这个编译错误提示指出&#xff0c;在编译源文件 "hdf_sbuf.c"&#xff08;位于 "driv…

纯html写个个人简历!模版分享啦!!!

用纯html写个个人简历&#xff01;首先得先找个模板&#xff01; 一个优秀模板所应该具有的素质&#xff1f; 简单&#xff1f; 仅仅一个html页面&#xff0c;完全没有乱七八糟&#xff0c;保证学的明明白白。 简单整洁&#xff1f; 该有的内容一个不少&#xff01; 一个完…

快速上手Docker:构建、运行与管理你的容器

快速上手Docker&#xff1a;构建、运行与管理你的容器 引言Docker基础知识1. Docker简介2. 核心概念3. Docker与虚拟机的比较 安装与配置Docker1. 安装Docker2. 配置Docker 构建Docker镜像1. 创建Dockerfile2. 构建镜像3. 验证镜像 运行Docker容器1. 从镜像运行容器2. 查看运行…

Java重写ArrayList方法

前言&#xff1a;ArrayList中有很多方法&#xff0c;我们只有深知这些方法是怎么实现的才能更好的使用&#xff0c;不用死记硬背 我们来一一实现&#xff08;重写&#xff09; 前提准备&#xff1a;我们需要先创建一个类&#xff0c;类中写ArrayList的内部结构组成 public cl…

计算机毕业设计 | SpringBoot+vue校园问卷调查系统(附源码)

1&#xff0c;绪论 研究目的 在进入21世纪以后&#xff0c;互联网得到了蓬勃的发展&#xff0c;电子问卷调查也开始逐渐流行起来。传统纸质问卷和电子问卷相比较后&#xff0c;传统问卷还存在很多弊端&#xff1a; 问卷分发起来比较困难&#xff0c;并且分发试卷耗费大量的金…

使用官方构建工具来创建一个vue3的项目

当你使用 Vite 构建项目时&#xff0c;可能会发现在命令行界面无法选择是否包含 TypeScript 等其他基础配置。此外&#xff0c;使用 vue create 命令创建项目时&#xff0c;默认会使用 vue-cli&#xff0c;但项目启动等过程可能较慢。在这种情况下&#xff0c;你可以参考以下步…

Web3去中心化存储:重新定义云服务

随着Web3技术的崭露头角&#xff0c;去中心化存储正在成为数字时代云服务的全新范式。传统的云服务依赖于中心化的数据存储架构&#xff0c;而Web3的去中心化存储则为用户带来了更安全、更隐私、更可靠的数据管理方式&#xff0c;重新定义了云服务的未来。 1.摒弃中心化的弊端 …

报考人工智能证书都学哪些内容?好过吗?

由国家工信部权威认证的人工智能证书是跨入人工智能行业的敲门砖&#xff0c;随着人工智能技术的发展越来越成熟&#xff0c;相关的从业人员也会剧增&#xff0c;证书的考取难度也会变高。如果已经从事或者准备从事人工智能行业的人员&#xff0c;对于考证宜早不宜迟&#xff0…