gin框架使用系列之四——json和protobuf的渲染

news2024/11/29 2:51:07
  • 系列目录
    • 《gin框架使用系列之一——快速启动和url分组》
    • 《gin框架使用系列之二——uri占位符和占位符变量的获取》
    • 《gin框架使用系列之三——获取表单数据》

  上篇我们介绍了如何获取数据,本篇我们介绍一下如何返回固定格式的数据。

一、返回JSON数据

在web开发中,我们最常用的数据传输格式就是json数据,其视前面的示例中我们都是返回的json数据,在这里我们再做一个总结,在gin中,我们使用c.JSON()函数来返回json数据,其中第一个参数是返回的状态码,第二个是具体的数据,在这里,我们并不需要将具体的对象转换成json然后再发出,只需要将对象传入即可,JSON()函数内部会帮我们转换好数据,

type Message struct {
	Msg    string
	Number int
	Name   string
}
func main() {
	router := gin.Default()
	router.GET("/moreJSON", func(c *gin.Context) {
		msg := Message{
			Number: 12,
			Name:   "hong",
			Msg:    "测试返回json",
		}
		c.JSON(http.StatusOK, msg)
	})
	router.Run() // listen and serve on 0.0.0.0:8080
}

当在浏览器中输入url时,会返回正确的json数据
在这里插入图片描述

二、返回protoBuf数据

相对于json数据,数据传输的方式还有proto,这种数据结构更加紧凑,因此在网络要求比较严格的情况下,经常使用proto的数据格式进行数据的传输。proto的数据格式相关的内容,可以自行下来了解以下,我后续也会新增这方面的博客,本篇主要讲解数据在gin中的使用

  • 首先我们需要编写一个proto文件,新建一个Message.proto文件,内容如下
syntax = "proto3";

option go_package = ".;proto";

message MessageProto {
  string Msg = 1;
  int32 Number = 2;
  string Name = 3;
}
  • 然后在控制台找到编写的proto文件所在的目录,执行如下命令
 protoc --go_out=. --go-grpc_out=. Message.proto
  • 这样就会生成对应的Message.pb.go文件,然后编写如下的代码,返回proto数据
func main() {
	router := gin.Default()
	router.GET("/more_protoBuf", func(c *gin.Context) {
		msg := proto.MessageProto{
			Number: 55,
			Name:   "rouc",
			Msg:    "测试返回proto",
		}
		c.ProtoBuf(http.StatusOK, &msg)
	})

	router.Run() // listen and serve on 0.0.0.0:8080
}

启动项目后在浏览器输入对应的url,会返回proto格式的数据
在这里插入图片描述


后记
  个人总结,欢迎转载、评论、批评指正

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【贪心】哈夫曼编码Python实现

文章目录 [toc]哈夫曼编码不同编码方式对比前缀码构造哈夫曼编码哈夫曼算法的正确性贪心选择性质证明 最优子结构性质证明 总结 时间复杂性Python实现 个人主页:丷从心 系列专栏:贪心算法 哈夫曼编码 哈夫曼编码是广泛用于数据文件压缩的十分有效的编码…

gitlab请求合并分支

直接去看原文: 原文链接:Gitlab合并请求相关流程_source branch target branch-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 入口: 仓库控制台的这两个地方都…

Oracle database 静默安装 oracle12c 一键安装 12.1.0.2

基于oracle安装包中应答文件实现一键安装 注意此安装脚本基于12.1.0.2 安装包 原始安装包结构为两个压缩包 此脚本使用安装包为原始压缩包解压后、 重新封装为一个.zip压缩包 建议在linux 环境下解压重新压缩后 使用该脚本 支持环境: Linux :centerOS 7 oracle :12.1.0.…

力扣精选题

题目: 写出最大数 回答: let count function(a,b){ let num1 a.toString() let num2 b.toString() return (num2num1)-(num1num2) } let last arr.sort(count) let arr [18,20,33,4,5] let num last.join() console.log(last,last) 最终得出最大数字符串: …

某后台管理系统加密参数逆向分析

前言 在我们日常的渗透中经常会遇到开局一个登录框的情况,弱口令爆破当然是我们的首选。但是有的网站会对账号密码等登录信息进行加密处理,这一步不由得阻碍了很多人的脚步。前端的加解密是比较常见的,无论是 web 后台还是小程序&#xff0c…

TransNeXt:稳健的注视感知ViT学习笔记

论文地址:https://arxiv.org/pdf/2311.17132.pdf 代码地址: GitHub - DaiShiResearch/TransNeXt: Code release for TransNeXt model 可以直接在ImageNet上训练的分类代码:GitHub - athrunsunny/TransNext-classify 代码中读取数据的部分修改…

数据驱动与数据安全,自动驾驶看得见的门槛和看不见的天花板

作者 |田水 编辑 |德新 尽管心理有所准备,2023年智能驾驶赛道的内卷程度还是超出了大多数人的预期。 这一年,汽车价格战突然开打,主机厂将来自销售终端的价格压力,传导到下游智驾供应商,于是,市面上出现…

鸿蒙4.0实战应用(ArkTS)-抽奖转盘

构建主界面 在这个章节中,我们将完成示例主界面的开发,效果如图所示: 功能要求: 通过画布组件Canvas,画出抽奖圆形转盘。通过显式动画启动抽奖功能。通过自定义弹窗弹出抽中的奖品。 在绘制抽奖圆形转盘前&#xff…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Column组件 沿垂直方向布局的容器。 子组件 可以包含子组件。 接…

github登录需要双因素认证(Two-factor authentication)

前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 github登录需要双因素认证(Two-factor authentication) 今天登录github发现需要绑定双因素才能够登录 我们…

uniapp 底部导航栏 tabBar

在 static 文件夹中新建文件夹 tabBar,放入标签图片 源素材如下: 在 pages.json 中添加 // 底部导航"tabBar": {// tab默认文字颜色"color": "#bfbfbf",// tab选中后的文字颜色"selectedColor": "#153c65&…

【SpringCloud】-Nacos客户端与服务端源码解析

Nacos系列 Nacos—简述、注册中心、配置中心 Nacos安装教程 SpringBoot项目与Nacos配置 一、背景介绍 Nacos(Naming and Configuration Service)是阿里巴巴开源的服务发现和配置管理工具,它是一个全面的微服务基础设施组件,提供…

HTML-基础知识-基本结构,注释,文档说明,字符编码(一)

1.超文本标记语言不分大小写。 2.超文本标签属性名和属性值不区分大小写。 3.超文本标签属性值重复&#xff0c;听取第一个。 4.html结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…

MySQL数据库多版本并发控制(MVCC)

在数据库中&#xff0c;并发控制是确保多个事务能够同时执行&#xff0c;而不会导致数据不一致或冲突的关键机制。多版本并发控制(MVCC)是一种流行的并发控制方法&#xff0c;它可以允许多个事务同时读取同一数据项的不同版本&#xff0c;而不会相互阻塞。本文将讨论MVCC的原理…

dubbo-admin连接虚拟机中的zookeeper报错zookeeper not connected

目录 前言 解决过程 总结 前言 可以优先查看总结看能否解决大家的问题&#xff0c;如果不能解决不需要查看解决过程浪费时间了。 解决过程 该问题卡住我很久&#xff0c;网上大多数文章都是修改配置文件中的连接超时时间&#xff0c;即修改如下内容 dubbo.registry.tim…

【2023】通过docker安装hadoop以及常见报错

&#x1f4bb;目录 1、准备2、安装镜像2.1、创建centos-ssh的镜像2.2、创建hadoop的镜像 3、配置ssh网络3.1、搭建同一网段的网络3.2、配置host实现互相之间可以免密登陆3.3、查看是否成功 4、安装配置Hadoop4.1、添加存储文件夹4.2、添加指定配置4.3、同步数据 5、测试启动5.1…

windirstat磁盘管理工具,清理磁盘神器(附网盘链接)

Windirstat是一款用于可视化磁盘空间使用情况的开源工具。它允许用户以图形方式查看磁盘上的文件和文件夹&#xff0c;以便更容易地识别和理解哪些文件或文件夹占用了最多的磁盘空间。该工具通过在磁盘上创建一个可交互的树状图&#xff0c;以及颜色编码和图表&#xff0c;帮助…

短说社区运营的使用工具分享(一)

本文是一篇针对短说社区运营的使用工具分享帖&#xff0c;是小编结合日常使用&#xff0c;总结的一些可以帮助网站管理员和运营人员进行日常操作和管理的工具。 1. 想天工作台之运营面板 想天工作台可以将桌面划分不同的类型来辅助办公&#xff0c;我分享下我当前的桌面情况&…

Linux下安装RocketMQ

1、创建文件夹app/rocketMQ 在xshell里可以找到这里&#xff0c;xftp可以直接创建文件夹&#xff0c;并上传文件&#xff0c;也可以使用命令创建文件夹&#xff0c; 创建文件夹命令&#xff1a;mkdir app、mkdir rocketMQ 2、上传好后解压 使用命令解压 unzip 压缩包名 3、获…

python进阶 — Python解释器

1、Python解释器 Python解释器是一个计算机程序&#xff0c;它将Python代码转换为计算机可以理解的机器代码&#xff0c;并执行这些机器代码。 1. 这篇文章介绍如何下载和安装Python解释器&#xff1a; python基础&#xff08;2&#xff09;— 环境搭建 2 . 这篇文章介绍如…