gin 四.响应数据

2023-11-09

一. 响应数据

  1. 在gin中请求接口响应时,实际可以响应会html,text,plain,json和xml等
  2. 比如前面gin基础示例中,接口响应时可以使用:
  1. gin.Context.string(“数据”),表示响应一个字符串
  2. gin.Context.c.JSON(),设置响应有json
//响应一个字符串
c.String(http.StatusOK, "响应数据")
//响应一个json
c.JSON(http.StatusOK, gin.H{"status": "you are logged in"})
  1. gin.H是⼀个强⼤的⼯具,有点像map,可以自定义响应的key,value等等
type H map[string]interface{}
  1. 也可以编写结构体,将指定结构体以json格式响应出去,示例:
//1.响应结构体
type Login struct {
	User     string `form:"username" json:"user" uri:"user" xml:"user"`
	Password string `form:"password" json:"password" uri:"password"xml:"password"`
}
 
func JsonFunc(c *gin.Context) {

	//1.创建接收参数对应的结构体变量
	var login Login

	//2.解析JSON
	if err := c.Bind(&login); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}
	//3.响应json
	c.JSON(http.StatusOK,login)
	//或使用gin.H{}
	//c.JSON(http.StatusOK,gin.H{"user": "ls", "Message": "hey", "Number": 123})
}
  1. 注意点: 响应的结构体不要忘记你打tag
  2. 另外还有响应xml,yaml,ProtoBuf等
	//响应xml格式
	router.GET("/someXML", func(c *gin.Context) {
		c.XML(http.StatusOK, gin.H{"user": "ls", "message": "hey", "status":
		http.StatusOK})
	})
	//响应YAML格式
	router.GET("/someYAML", func(c *gin.Context) {
		c.YAML(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
	})
	//响应ProtoBuf格式
	router.GET("/someProtoBuf", func(c *gin.Context) {
		reps := []int64{int64(1), int64(2)}
		label := "test"
			//protobuf的特定定义写在testdata / protoexample文件中
			data := &protoexample.Test{
			Label: &label,
			Reps:  reps,
		}
		//注意在响应中数据变为二进制数据
		//将输出protoexample.test protobuf序列化数据
		c.ProtoBuf(http.StatusOK, data)
	})

二. c.Writer.Header().Set处理响应头

  1. c.Writer.Header().Set方法是一种设置响应头的方式,它可以接受两个字符串类型的参数,分别表示响应头的名称和值
func main() {
	r := gin.Default() // 创建一个默认的gin引擎

	// 注册一个GET路由
	r.GET("/hello", func(c *gin.Context) {
		// 设置响应头中的Content-Type为text/plain
		c.Writer.Header().Set("Content-Type", "text/plain")
		// 返回200状态码和"Hello, world!"字符串
		c.String(200, "Hello, world!")
	})

	r.Run(":8080") // 启动服务器
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gin 四.响应数据 的相关文章

  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • Avro 模式中是否可以有一个可选字段(即该字段根本不会出现在 .json 文件中)?

    Avro 模式中是否可以有一个可选字段 即该字段根本不会出现在 JSON 文件中 在我的 Avro 架构中 我有两个字段 name author type null string default null name importance t
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 如何格式化 Json 输出

    请帮助我如何获取 JSON 输出 如下所示 costMethod Average fundingDate 2008 10 02 fundingAmount 2510959 95 代替 type sma costMethod Average
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • Anchor Cycler / 下拉菜单定期导入学校班级数据

    SO 我最近一直在研究一些 html javascript css 为我的学生创建一个在线表格来查看详细信息 分数和各种信息 但我遇到了困难 不确定如何做我正在尝试的事情去做 我将所有这些内容发布在一个线程中的原因是因为我认为其中几个可能会
  • 根据属性中的值类型反序列化对象

    TL DR json net 中是否有一种简单的方法来检查属性的类型并基于该类型创建实例 我在 JSON 中有以下两个对象 它们是JSON API http jsonapi org data type Test id 1 and data
  • 使用 TestRestTemplate 和 MockRestServiceServer 时,解析异常而不是实体列表不起作用

    我有一个简单的控制器 CODE https github com joergi tryouts blob main kotlin mockrestserver src main kotlin io joergi kotlinmockrest
  • jQuery 解析 JSON

    当我尝试解析 JSON 验证的字符串时收到此错误 JSON parse 意外字符 当我删除需要转义的字符 style width 400px 时 它完美地工作 我缺少什么 在使用 parseJSON 之前是否有一种独特的方法来转义字符 va
  • JSON.stringify 对于大型对象来说非常慢

    我在 javascript 中有一个非常大的对象 大约 10MB 当我对其进行字符串化时 需要很长时间 因此我将其发送到后端并将其解析为一个对象 实际上是带有数组的嵌套对象 这也需要很长时间 但这不是我们在这个问题中的问题 问题 我怎样才能
  • Android - 下载 JSON 数据并保存到共享首选项

    我正在从 PHP 服务读取 JSON 数据 每当该 JSON 的版本发生变化时 我想将其存储在 Android 上 用新数据替换旧数据 JSON 仅用于填充 Spinner 我的问题是 JSON 有 36KB 可以将其存储在共享首选项中有一
  • Twitter api 文本字段值被截断

    为什么文本字段值被截断以及如何获得完整的值 截至目前 我正在尝试获取如下所示的文本字段值 do if let responseObject try NSJSONSerialization JSONObjectWithData respons
  • 在Unity游戏中保存数据的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道 在 Unity 游戏中保存数据的最佳方式是什么 JSON 如果是这样 怎么办 谢谢 以下是一些不同的方式和方法保存 Unit
  • 在 Django 模板中通过键访问字典

    我正在将字典从我的视图传递到模板 所以 key1 value1 key2 value2 传入并循环键 值对很好 但是我还没有找到从特定键直接在视图中访问的优雅解决方案 例如 key1 例如 bu json items key1 我可以使用一
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • LeetCode108.将有序数组转换为二叉搜索树

    题目来源 108 将有序数组转换为二叉搜索树 力扣 LeetCode 二叉搜索树定义 二叉搜索树 Binary Search Tree 又 二叉查找树 二叉排序树 它或者是一棵空树 或者是具有下列性质的 二叉树 若它的左子树不空 则左子树上
  • 2023华为OD机试真题【处理器问题/深度优先搜索】

    题目描述 某公司研发了一款高性能AI处理器 每台物理设备具备8颗AI处理器 编号分别为0 1 2 3 4 5 6 7 编号0 3的处理器处于同一个链路中 编号4 7的处理器处于另外一个链路中 不同链路中的处理器不能通信 现给定服务器可用的处
  • mysql 读写分离

    读写分离引入时机 大多数互联网业务中 往往读多写少 这时候数据库的读会首先成为数据库的瓶颈 如果我们已经优化了SQL 但是读依旧还是瓶颈时 这时就可以选择 读写分离 架构了 读写分离首先需要将数据库分为主从库 一个主库用于写数据 多个从库完
  • C/C++中浮点数的存储方式

    原文地址 C C 中浮点数的存储方式 作者 andyhzw 根据国际标准IEEE 754 任意一个二进制浮点数V可以表示成下面的形式 V 1 s M 2 E 1 1 s表示符号位 当s 0 V为正数 当s 1 V为负数 2 M表示有效数字
  • 使用umi3和antd pro5从零实现全栈中后台管理系统

    0 前言 使用umi3和antd pro5从零实现全栈中后台管理系统 0 1 涉及技术栈 前端 TS React React Hooks umi3 antd pro5 后端 express mongodb jwt 0 2 实现的功能 后端用
  • STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式

    机器人开发过程中 对于直流电机来说 编码器至关重要 它不仅可以使我们对电极进行精确的速度闭环 位置闭环 还可以通过时间积分 根据运动学关系 获得速度 位置等信息 STM32的定时器有编码器模式 大大的方便我们的开发 使用STM32cubeM
  • 刨根问底:C++中浮点型变量(float, double)的比较问题。

    首先 让我们先来看一段代码 include
  • CVE-2022-25845 反序列化漏洞分析

    测试环境 jdk1 8 fastjson 1 2 80 win10 实验POC public class Poc extends Exception public void setName String str try Runtime ge
  • python __next__()方法_Python迭代器的用法,next()方法的调用

    迭代器的用法 首先说两个概念 一个是可迭代的对象 一个是迭代器对象 两个不同 可迭代的 Iterable 就是可以for循环取数据的 比如字典 列表 元组 字符串等 不可使用next 方法 迭代器 Iterator 也是可以依次迭代取出数据
  • msrcr图像增强算法 matlab,图像处理之Retinex增强算法(SSR、MSR、MSRCR)

    视网膜 大脑皮层 Retinex 理论认为世界是无色的 人眼看到的世界是光与物质相互作用的结果 也就是说 映射到人眼中的图像和光的长波 R 中波 G 短波 B 以及物体的反射性质有关 其中I是人眼中看到的图像 R是物体的反射分量 L是环境光
  • BugkuCTF-MISC题粗心的佳佳

    下载得到3个文件 预期解法应该是根据图片写出脚本 把混淆过的二维码恢复 我发现照着password png也能看出原本的二维码大概长啥样 手动修复得到一张二维码 扫码得到IXE1VDYmMjk base64解码得到压缩包密码 q5T6 29
  • GUI Guider设计UI界面移植到STM32

    GUI Guider设计UI界面移植到STM32 一 什么是GUI Guider 什么是 GUI Guider GUI Guider 是恩智浦为 LVGL 开发了一个上位机GUI 设计工具 可以通过拖放控件的方式设计 LVGL GUI 页面
  • java热部署

    Class forName和ClassLoader loadClass 简书 Eclipse安装热部署热加载插件JRebel 免费版 idea也可用 that summer CSDN博客 Eclipse中使用JRebel实现项目热部署 Ma
  • 【自定义表单】自定义表单设计

    1 后端设计1 diy field pool 字段池 我们定义好的字段类型 diy form 表单表 记录用户自定义的表单 diy form field 表单字段表 记录某张表单中有哪些字段 diy form entity 表单实例表 记录
  • XP下VMware模拟Ubuntu不能使用共享文件夹问题解决vmhgfs

    目前XP下使用VMware workstation 6 0 2虚拟ubuntu后 即使安装了VMware Tools并设置了共享文件夹后 虽然可以看到 mnt hgfs 但仍旧不能访问共享目录的解决方案 问题 主要问题是在安装vmware
  • 向较长的字符串中的指定位置添加指定元素

    今天抓取数据的时候获取到多个url中的翻页数据 但是单个url又需要进行翻页的操作 因此就需要在url中指定的位置添加新的参数用于数据的翻页 如何在指定位置添加指定的参数呢 下面通过一个例子来说明 url https list tmall
  • Qt线程之间通过signal和slot传递数据

    Qt线程之间通过signal和slot传递数据 这种方法主要是为了设置自己定义的数据类型 在不同的线程之间进行通信 如果自己定义的数据类型未经处理之间传递会报如下错误 QObject connect Cannot queue argumen
  • OpenSea进阶之路:成立4年估值超百亿美元

    来源 Odaily星球日报 作者 Jeff Kauflin 2022 新年伊始 加密行业迎来的第一个好消息就是 Opensea 这个 NFT市场的王者在 1 月 5 日宣布完成了一笔高达 3 亿美元的 C 轮融资 估值更是飙升到 130 亿
  • python网页爬虫xpath应用

    一 认识xpath和xml数据 lxml是Python基于xpath做数据解析的工具 from lxml import etree 1 xpath数据解析 通过提供标签路径来获取标签 xpath指的就是标签的路径 1 xpath基本感念 树
  • gin 四.响应数据

    响应数据 一 响应数据 二 c Writer Header Set处理响应头 一 响应数据 在gin中请求接口响应时 实际可以响应会html text plain json和xml等 比如前面gin基础示例中 接口响应时可以使用 gin C