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

这篇具有很好参考价值的文章主要介绍了GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

api demo 代码生成 | go-zero Documentation

官方demo的架构如下:

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

etc包下:

demo-api.yaml

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql编辑
服务名称:demo-api
HOST地址:0.0.0.0监听所有可用网络接口
Port地址:服务运行在8888端口

internal包下:

config/config.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql编辑
存储config信息,这里rest.RestConf是RESTful API的结构体,此外还可以添加数据库,缓存配置信息

handler/demohandler.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql编辑
输入SvcContext(后面自己定义),返回HandlerFunc函数
三个过程:
解析request的类型,解析错误,返回error(下图为httpx.ErrorCtx源码)
GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql编辑
l := logic.NewDemoLogic(r.Context(), svcCtx)的相关代码是我们后面自己定义,
l.Demo实际上充当了业务逻辑的处理过程
失败,返回报错,成功,则带上OK(200状态码)返回

handler/routes.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql编辑
这个文件夹的代码由goctl自动生成,注册路由,方法是get,路径是/from/:name(:name代表路径有一个名为name的参数,在后面定义了这个name类型的参数)
[]rest.Route代表了该类型的切片,包含了定义路由的那个结构体

logic/demologic.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql编辑在demhandler中用到的代码
DemoLogic结构体:logger(用于记录日志),ctx(请求的上下文信息),svcCtx(服务相关的信息,数据库连接,缓存实例)
NewDemoLogic就是用于New一个DemoLogic实例
Demo方法就是处理request,构造response的方法,具体的业务逻辑代码
type是后面定义的

svc/servicecontext.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql
用途是通过创建svcCtx来访问config字段,套娃,增强代码的解藕性

types/types.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql
goctl自动生成,request和response结构体长得样子
name类型被定义,可选为you或者me

demo.api

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql
生成routes.go和types.go的文件依据,注册api处理的handler
采用proto3语法(一种数据交换格式)

demo.go

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql
主文件,有如下步骤

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

启动服务

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql
测试
GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究,微服务,golang,mysql
与预期结果相符合文章来源地址https://www.toymoban.com/news/detail-800044.html

到了这里,关于GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GoZero微服务微服务个人探究之路(五)部署微服务到k8s的一种最佳实践

    在每个微服务下面新建一个Dockerfile文件 根据Dockerfile文件使用docker build指令,打包为具体的镜像 (根据自己需求选择)将docker镜像上传到私人docker仓库或者是公共仓库,如果没有上传,则自动保存在本地 编写用于部署k8s的yaml文件--服务service,节点--pod 根据yaml文件,使用ku

    2024年01月18日
    浏览(38)
  • 【go-zero】docker镜像直接部署go-zero的API与RPC服务 如何实现注册发现?docker network 实现 go-zero 注册发现

    使用docker直接部署go-zero微服务会发现API无法找到RPC服务 用docker直接部署 我们会发现API无法注册发现RPC服务 原因是我们缺少了docker的network网桥 RPC服务运行正常 API服务启动,通过docker logs 查看日志还是未发现RPC API的yaml配置 RPC服务的IP是 127.0.0.1 与对应的端口 下图为改成了定

    2024年02月13日
    浏览(46)
  • GoZero微服务个人探究(四)启动rpc微服务报错panic: context deadline exceeded

    这里的原因有很多: 网络不好,etcd服务没有起起来,如果etcd开起了tls加密,微服务没有配置证书等原因 主要讲的是为微服务配置好认证证书,因为其他两个容易解决 在对应服务的xxx.yaml内,补充etcd认证文件相关内容 参考来源:Go-Zero官方文档

    2024年01月16日
    浏览(87)
  • go-zero的服务发现源码阅读

    服务发现原理与grpc源码解析_wangxiaoangg的博客-CSDN博客   go-zero rpc demo官方文档:rpc编写与调用 | go-zero 目录 一 服务注册 1. 创建rpc服务 2. 启动rpc服务 3. registerEtcd做了什么 4. discov.NewPublisher 服务发布者 二 服务发现 1.定义注册resolver 2.解析etcd地址创建链接 3.update方法 在看rp

    2024年02月06日
    浏览(61)
  • go-zero微服务实战——服务构建

    接上一节go-zero微服务实战——基本环境搭建。搭建好了微服务的基本环境,开始构建整个微服务体系了,将其他服务也搭建起来。 order的目录结构,如下 根目录 api服务 rpc服务 自定义逻辑层logic 自定义参数层models 自定义工具层util api服务和rpc服务都是基于goctl一键生成的,当

    2024年02月14日
    浏览(46)
  • 使用go-zero快速构建微服务

    本文是对 使用go-zero快速构建微服务 [1] 的亲手实践 编写API Gateway代码 mkdir api goctl api -o api/bookstore.api cd api goctl api go -api bookstore.api -dir . go run bookstore.go -f etc/bookstore-api.yaml 启动API Gateway服务,默认侦听在8888端口 因为默认生成的 api/etc/bookstore-api.yml 为: 按提示下载,再次运行

    2024年02月13日
    浏览(64)
  • go-zero的rpc服务案例解析

    go-zero的远程调用服务是基于gRpc的gRPC教程与应用。 zero使用使用gRpc需要安装 protoc 插件,因为gRpc基于protoc插件使用protocol buffers文件生成rpc服务器和api的代码的。 gRPC 的代码生成还依赖 protoc-gen-go,protoc-gen-go-grpc 插件来配合生成 Go 语言的 gRPC 代码。 也可以使用go get命令安装

    2024年02月13日
    浏览(75)
  • go-zero学习 第三章 微服务

    1.1 API服务模块 goctl 使用 api 文件生成 api服务 命令: 1.2 RPC服务模块 goctl 使用 protoc 文件生成 rpc服务 命令: 注意: --go_out 、 --go-grpc_out 、 --zrpc_out 三者配置的路径需要完全一致,否则会报下列错误。 基础代码:已生成基本的API服务、RPC服务。 这里以API服务调用RPC服务的登

    2024年02月16日
    浏览(72)
  • 【go-zero】go-zero阿里云oss 前端上传文件到go-zero API服务 并在k8s pod中创建文件 并推送到阿里云oss 最佳实践

    问题:在本地通过上传文件,然后将文件推送到aliyun的oss中,是没问题的 但是部署到了k8s中,则出现了问题,一直报错没有创建的权限 思路:开始认为应该将该文件挂载到configmap中,然后通过这种方式修改了deployment和dockerfile。最终发现应该是go的创建文件路径方式搞错了,

    2024年02月13日
    浏览(47)
  • 微服务框架 go-zero logx 日志组件剖析

    上一篇我们说到咱们还剩下 addTenant 功能还未实现,不知道有没有兄弟感兴趣去实验一波的,本篇文章进行简要补充 根据上一篇文章分析,其实我们只需要执行如下几步即可: 编写 tenant.api,提供外部 addTenant 的 http 接口 编写 tenant.api 提供一个 POST http 的接口 / api /tenant/addt

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包