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 四.响应数据 的相关文章

随机推荐

  • 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