当前位置: 首页 > news >正文

gin数据解析和绑定

1. Json 数据解析和绑定

  • 客户端传参,后端接收并解析到结构体
package mainimport ("github.com/gin-gonic/gin""net/http"
)// 定义接收数据的结构体
type Login struct {// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段User    string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"`Pssword string `form:"password" json:"password" uri:"password" xml:"password" binding:"required"`
}func main() {// 1.创建路由// 默认使用了2个中间件Logger(), Recovery()r := gin.Default()// JSON绑定r.POST("loginJSON", func(c *gin.Context) {// 声明接收的变量var json Login// 将request的body中的数据,自动按照json格式解析到结构体if err := c.ShouldBindJSON(&json); err != nil {// 返回错误信息// gin.H封装了生成json数据的工具c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}// 判断用户名密码是否正确if json.User != "root" || json.Pssword != "admin" {c.JSON(http.StatusBadRequest, gin.H{"status": "304"})return}c.JSON(http.StatusOK, gin.H{"status": "200"})})r.Run(":8000")
}

2. 表单数据解析和绑定

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><form action="http://localhost:8000/loginForm" method="post" enctype="application/x-www-form-urlencoded">用户名<input type="text" name="username"><br>密码<input type="password" name="password"><input type="submit" value="提交"></form>
</body>
</html>
package mainimport ("net/http""github.com/gin-gonic/gin"
)// 定义接收数据的结构体
type Login struct {// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段User    string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"`Pssword string `form:"password" json:"password" uri:"password" xml:"password" binding:"required"`
}func main() {// 1.创建路由// 默认使用了2个中间件Logger(), Recovery()r := gin.Default()// JSON绑定r.POST("/loginForm", func(c *gin.Context) {// 声明接收的变量var form Login// Bind()默认解析并绑定form格式// 根据请求头中content-type自动推断if err := c.Bind(&form); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}// 判断用户名密码是否正确if form.User != "root" || form.Pssword != "admin" {c.JSON(http.StatusBadRequest, gin.H{"status": "304"})return}c.JSON(http.StatusOK, gin.H{"status": "200"})})r.Run(":8000")
}

3. URI数据解析和绑定

package mainimport ("net/http""github.com/gin-gonic/gin"
)// 定义接收数据的结构体
type Login struct {// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段User    string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"`Pssword string `form:"password" json:"password" uri:"password" xml:"password" binding:"required"`
}func main() {// 1.创建路由// 默认使用了2个中间件Logger(), Recovery()r := gin.Default()// JSON绑定r.GET("/:user/:password", func(c *gin.Context) {// 声明接收的变量var login Login// Bind()默认解析并绑定form格式// 根据请求头中content-type自动推断if err := c.ShouldBindUri(&login); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}// 判断用户名密码是否正确if login.User != "root" || login.Pssword != "admin" {c.JSON(http.StatusBadRequest, gin.H{"status": "304"})return}c.JSON(http.StatusOK, gin.H{"status": "200"})})r.Run(":8000")
}

 

 

相关文章:

gin数据解析和绑定

1. Json 数据解析和绑定 客户端传参&#xff0c;后端接收并解析到结构体 package mainimport ("github.com/gin-gonic/gin""net/http" )// 定义接收数据的结构体 type Login struct {// binding:"required"修饰的字段&#xff0c;若接收为空值…...

TCP服务器最多支持多少客户端连接

目录 一、理论数值 二、实际部署 参考 一、理论数值 首先知道一个基础概念&#xff0c;对于一个 TCP 连接可以使用四元组&#xff08;src_ip, src_port, dst_ip, dst_port&#xff09;进行唯一标识。因为服务端 IP 和 Port 是固定的&#xff08;如下图中的bind阶段&#xff0…...

UML类图学习

UML类图学习 UML类图是描述类之间的关系概念1.类(Class)&#xff1a;使用三层矩形框表示2.接口(interface)&#xff1a;使用两层矩形框表示&#xff0c;与类图主要区别在于顶端有<<interface>>显示3、继承类&#xff08;extends&#xff09;&#xff1a;用空心三角…...

死锁面试题详解

什么是死锁&#xff1f; 死锁是指两个或多个进程在执行过程中&#xff0c;因争夺资源而造成的一种相互等待的现象&#xff0c;如果没有外力干涉&#xff0c;这些进程将永远无法继续执行 死锁通常发生在多个进程试图同时访问同一资源而无法获取的情况下&#xff0c;例如&#…...

【rust/bevy】使用points构造ConvexMesh

目录 说在前面问题提出Rapier具体实现参考 说在前面 操作系统&#xff1a;win11rust版本&#xff1a;rustc 1.77.0-nightlybevy版本&#xff1a;0.12github&#xff1a;这里 问题提出 在three.js中&#xff0c;可以通过使用ConvexGeometry从给定的三维点集合生成凸包(Convex Hu…...

【C语言】string.h——主要函数总结

string.h主要定义了字符串处理函数和内存操作函数。 字符串处理函数 strlen() 功能&#xff1a;strlen()函数返回字符串的字节长度&#xff0c;不包括末尾的空字符\0。 函数原型&#xff1a;size_t strlen(const char* s); 返回值&#xff1a;返回的是size_t类型的无符号整…...

如何在前端优化中减少页面加载时间?

在前端优化中&#xff0c;减少页面加载时间是至关重要的&#xff0c;因为快速加载的页面可以提高用户体验&#xff0c;减少跳出率&#xff0c;从而提升网站的整体性能。本文将介绍一些实用的前端优化技巧&#xff0c;以帮助您减少页面加载时间。 一、优化图片 图片是页面加载…...

Typecho后台无法登录显示503 service unavailable问题及处理

一、Typecho 我的博客地址&#xff1a;https://www.aomanhao.top 使用老薛主机动态Typecho博客框架handsome主题的搭配&#xff0c;文章内容可以异地网页更新&#xff0c;可以听后台背景音乐&#xff0c;很好的满足我的痛点需求&#xff0c;博客部署在云端服务器访问响应较快…...

Python入门(一)

anaconda安装 官网&#xff1a;https://www.anaconda.com下载 jupyter lab 简介&#xff1a; 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境&#xff0c;你可以使用它编写notebook&#xff0c;操作终端&#xff0c;编辑markdown文本&#xf…...

云表企业级无代码案例-自主开发ERP管理系统

痛点 我是一名企业经营者&#xff0c;同时也是信息化建设的坚定倡导者。凭借管理专业背景&#xff0c;我深知经营数据对于企业的至关重要性。如何高效搜集、精准分析经营数据&#xff0c;并将其转化为决策依据&#xff0c;直接关乎企业的生死存亡。太多因盲目决策而倒闭的企业…...

Qt —— 编译Qt5版本QFTP库,并实现连接服务、获取列表、上传、下载、删除文件等操作(附源码、附基于Qt5编译好的QFTP库)

示例效果1 示例效果2 介绍 QFTP是Qt4的库,Qt5改用了QNetworkAccessManager来代替。但是Qt5提供的QNetworkAccessManager仅支持FTP的上传和下载,所以只能将QFTP库编译为Qt5的库来进行调用。 QFTP在Github的下载地址:https://github.com/qt/qtftp 客户端源码生成的release结果…...

碰到es6的...拓展运算符

第一次碰到&#xff0c;哥们啥也不会 let searchForm ref({}) let formData ref({}) const initArgs async() > { args.value props.init_data formData .value { ...searchForm.value,//把值都带过来 workWhere : args.value.workWhere, statusArgs : args.value.sta…...

JDK8新特性详解

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…...

ELK+Filebeat 部署实验

Filebeat是轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat&#xff0c;并指定目录与日志格式&#xff0c;Filebeat 就能快速收集数据&#xff0c;并发送给 logstash 进行解析&#xff0c;或是直接发给 Elasticsearch 存储&#xff0c;性能上相比运行…...

利用wireshark lua扩展能力增加自定义解析器[注释解读版]

前言 Wireshark提供了lua扩展能力&#xff0c;可以定制一些Listner和Dissector&#xff0c;用于一些自定义的使用场景&#xff0c;例如: lua插件适应场景Listener报文统计、内容抽取等Dissector协议树解析&#xff0c;在wireshark中立等可看 已在以前的文档中积累了对于List…...

GPT-5不叫GPT-5?下一代模型会有哪些新功能?

OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示&#xff0c;他现在的首要任务就是推出下一代大模型&#xff0c;这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%&#xff0c;GPT-5应该是15%或者20%。 OpenAI从去年开…...

2024.1.23(347.前k个高频元素)

2024.1.23(347.前k个高频元素) 思路 这道题目主要涉及到如下三块内容&#xff1a; 1.要统计元素出现频率 2.对频率排序 3.找出前K个高频元素 首先统计元素出现的频率&#xff0c;这一类的问题可以使用map来进行统计。 然后是对频率进行排序&#xff0c;这里我们可以使用一种…...

MySQL对数据库的操作

前腰&#xff1a;本节只是的数据库本身进行增删查改、备份、恢复等操作&#xff0c;而不是对数据库内的数据表做操作&#xff0c;还请您区分好这两点。 1.创建数据库 # 创建数据库的语法形式 CREATE DATABASE [IF NOT EXISTS] database_name [create_specification]# 大写的是…...

解决Unity WebGLInput插件全屏输入的问题

unity webgl的中文输入插件WebglInput在全屏的时候会出现无法输入中文/输入的英文会字母出现在光标后面/什么都输入不了的等无法正常使用的情况。 插件官网作者给出了unity的2017&#xff0c;2018&#xff0c;2019版本的全屏输入解决方法。 最新插件下载地址&#xff1a;http…...

Android14实战:调整A2DP音量曲线(五十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…...

Dynamic-Datasource连接池监控指标:10个关键指标调用指南

Dynamic-Datasource连接池监控指标&#xff1a;10个关键指标调用指南 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-datasource Dy…...

八位行波进位加法器设计全攻略:从理论到Quartus II实现

八位行波进位加法器设计全攻略&#xff1a;从理论到Quartus II实现 在数字电路设计中&#xff0c;加法器是最基础也是最重要的运算单元之一。无论是简单的计算器还是复杂的CPU&#xff0c;都离不开高效可靠的加法器设计。八位行波进位加法器作为入门级但实用性极强的设计案例&a…...

文墨共鸣企业内训系统搭建:基于AI的个性化学习路径与技能评估

文墨共鸣企业内训系统搭建&#xff1a;基于AI的个性化学习路径与技能评估 最近和几个做企业培训的朋友聊天&#xff0c;大家普遍头疼一个问题&#xff1a;公司花大价钱采购的在线学习平台&#xff0c;员工不爱用。要么是课程千篇一律&#xff0c;老员工觉得没意思&#xff1b;…...

XC7Z100与GMSL FMC采集卡在自动驾驶视觉系统中的高效集成方案

1. XC7Z100与GMSL FMC采集卡的核心价值 在自动驾驶视觉系统中&#xff0c;图像采集的实时性和可靠性直接决定了系统的性能上限。XC7Z100 FPGA与GMSL FMC采集卡的组合&#xff0c;就像给系统装上了"超清眼睛"和"高速神经"。我曾参与过一个夜间自动驾驶项目&…...

面试回答第十五问:类加载

类加载简介 类加载是JVM能够识别类信息&#xff0c;分配空间创建对象实例的基础。 类加载一共分为五阶段&#xff0c;分别是加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化五阶段。这不是顺序&#xff0c;不是加载之后才能验证&#xff0c;验证之后才…...

AnimateDiff保姆级教学:负面提示词详解,轻松提升视频画质

AnimateDiff保姆级教学&#xff1a;负面提示词详解&#xff0c;轻松提升视频画质 你是否遇到过这样的困扰&#xff1a;用AnimateDiff生成的视频创意很棒&#xff0c;但画面总有些小瑕疵&#xff1f;比如人物皮肤上不自然的纹理、背景里莫名其妙的噪点&#xff0c;或是某些区域…...

SRS服务器从编译到实战:Ubuntu环境下的RTMP/WebRTC全协议测试

SRS服务器从编译到实战&#xff1a;Ubuntu环境下的RTMP/WebRTC全协议测试 在流媒体技术快速发展的今天&#xff0c;构建一个高效、稳定的视频服务器成为许多开发者和企业的核心需求。SRS(Simple Realtime Server)作为一款开源的实时视频服务器&#xff0c;凭借其对多种流媒体协…...

探索Ryujinx:Nintendo Switch模拟器全解析

探索Ryujinx&#xff1a;Nintendo Switch模拟器全解析 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 在游戏技术不断发展的今天&#xff0c;模拟器技术为玩家提供了跨平台体验游戏的可…...

Obsidian插件管理技巧:从零开始配置你的第二个知识库

Obsidian插件管理技巧&#xff1a;从零开始配置你的第二个知识库 当你已经熟悉了Obsidian的基础操作&#xff0c;并建立了第一个知识库后&#xff0c;很可能会想要创建第二个知识库来管理不同的项目或学习领域。但这时你会发现&#xff0c;新建的知识库并没有自动继承你精心配置…...

ccmusic-database从零开始:基于ccmusic-database微调新增流派(如国风/电子)

ccmusic-database从零开始&#xff1a;基于ccmusic-database微调新增流派&#xff08;如国风/电子&#xff09; 1. 项目介绍与背景 音乐流派分类是音频分析领域的重要应用&#xff0c;ccmusic-database项目基于深度学习技术&#xff0c;能够自动识别音频文件的音乐流派。这个…...