文章目录

    • Gin快速搭建一个web服务
    • Gin数据交互JSON串内容规范
    • Gin使用结构体返回数据给前端
    • Gin配置POST类型的路由
    • Gin获取GET请求参数
    • Gin获取POST请求参数-form-data类型
    • Gin获取POST请求参数-JSON类型
    • Gin获取参数绑定至结构体

Gin快速搭建一个web服务

  1. 下载包
\\新建一个文件,文件名gitstudy,然后右击使用vscode打开,初始化目录,并下载包
go mod init ginstudy 
go get -u github.com/gin-gonic/gin
  1. 新建main.go
package mainimport ("net/http""github.com/gin-gonic/gin"
)func main() {//1. 创建一个路由引擎,之后可以在路由引擎中添加一些路由和路由处理逻辑r := gin.Default()//2. 添加路由到路由引擎,以及指定该路由的处理逻辑// GET("该路由的路径,处理该路由的逻辑")r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",})})r.GET("/", func(c *gin.Context) {//c.String//http.StatusOk, 就是状态码200,http这个包定义了相关状态码别名,直接调用就好c.String(http.StatusOK, "你在访问首页")})//3. 启动gin服务r.Run() // 默认监听8080,可以修改其他端口,r.Run(:8081)
}

Gin数据交互JSON串内容规范

  1. 用独立函数返回json串的写法
// 定义一个函数,用于gin处理相关请求的逻辑,并返回json数据
func getUserInfo(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"name":    "马云","age":     18,"address": "杭州",})
}//使用独立的函数处理逻辑r.GET("/api/user/info", getUserInfo)

浏览器访问
在这里插入图片描述

  1. 前后端分离时,返回j给前端json串常用的格式,这是相对标准的格式,可以给前端返回数据都按这个格式
	/*{"status": 200, //请求已经收到,后端处理返回给前端状态码,命名自定义code、statusCode"message": "查询成功""data": {"name": "马云","age": "18","address": "杭州",}}*/

Gin使用结构体返回数据给前端

type UserInfo struct {Username string `json:"username"`Age      int    `json:"age"`Address  string `json:"address"`
}type RetrunData struct {Status  int      `json:"status"`Message string   `json:"message"`Data    UserInfo `json:"data"`
}func retrunDataWithStruct(c *gin.Context) {UserInfo := UserInfo{Username: "马云",Age:      18,Address:  "杭州",}RetrunData := RetrunData{Status:  200,Message: "用户信息查询",Data:    UserInfo,}c.JSON(http.StatusOK, RetrunData)
}r.GET("/api/usr/infoWithSturct", retrunDataWithStruct)

Gin配置POST类型的路由

跟get配置基本一样,只是访问的需要postman使用post请求

func addUser(c *gin.Context) {RetrunData := RetrunData{Status:  200,Message: "创建成功",}c.JSON(http.StatusOK, RetrunData)
}r.POST("/api/user/add", addUser)

在这里插入图片描述

Gin获取GET请求参数

参数是什么?就是url 问号后面的字段。?articleId=149418888,多个参数使用&符号分隔
例如:https://editor.csdn.net/md/?articleId=149418888&username=admin
1.配置接收参数

	//接受参数u := c.Query("username") //u := c.DefaultQuery("username","小马")id, _ := strconv.Atoi(c.Query("id"))//去数据库中查询该用户信息fmt.Printf("拿到用户名:%s, ID:%d\n", u, id)
  1. 发送带参数请求
    在这里插入图片描述

  2. 查看参数是否已接收到
    在这里插入图片描述

Gin获取POST请求参数-form-data类型

// POST数据提交格式有两种:
// JSON {}
// from-data 表单,数据量比较小使用,两种方法都有用到func addUser(c *gin.Context) {// POST获取请求参数//from-data获取请求参数u := c.PostForm("username")age, _ := strconv.Atoi(c.PostForm("age"))//address := c.PostForm("address")address := c.DefaultPostForm("address", "北京") //如果请求里没有这个key,就使用默认值,如果传有这个key就以你的配置为准UserInfo := UserInfo{Username: u,Age:      age,Address:  address,}RetrunData := RetrunData{Status:  200,Message: "创建成功",Data:    UserInfo,}c.JSON(http.StatusOK, RetrunData)
}

在这里插入图片描述

Gin获取POST请求参数-JSON类型

func addUserByJson(c *gin.Context) {// POST获取请求参数// JSON接受参数jsonData, _ := c.GetRawData()//拿到json串之后,也有两种处理。//1.转成一个mapvar m map[string]interface{}json.Unmarshal(jsonData, &m)c.JSON(http.StatusOK, m)}

在这里插入图片描述

Gin获取参数绑定至结构体

//模型绑定
// 可以把请求的数据直接绑定到结构体  // 常用
// JSON接受参数,并且绑定到结构体func addUserBindStuct(c *gin.Context) {UserInfo := UserInfo{}if err := c.ShouldBindJSON(&UserInfo); err != nil {// 说明绑定失败fmt.Println("数据绑定失败", err.Error())c.JSON(http.StatusOK, gin.H{"message": "参数格式不正确","status":  500,})} else {c.JSON(http.StatusOK, UserInfo)}}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Baumer工业相机堡盟工业相机如何通过YoloV8的深度学习模型实现PCB的缺陷检测(C#代码,UI界面版)

Baumer工业相机堡盟工业相机如何通过YoloV8的深度学习模型实现PCB的缺陷检测(C#代码,UI界面版)工业相机使用YoloV8模型实现PCB的缺陷检测工业相机实现YoloV8模型实现PCB的缺陷检测的技术背景在相机SDK中获取图像转换图像的代码分析工业相机图…

【Vivado那些事儿】AMD-XILINX 7系列比特流加密

前提:加密有风险,操作需谨慎前言在许多项目中,经过漫长的等待,我们的 FPGA 设计终于可以投入现场部署了。前期的资金的投入及知识产权的保护,我们需要对现场部署的 FPGA 进行比特流保护以防止逆向工程和未经授权的重复…

RK3588 安卓adb操作

adb(Android Debug Bridge)是一个用于与安卓设备进行通信和控制的工具。adb可以通过USB或无线网络连接安卓设备,执行各种命令,如安装和卸载应用,传输文件,查看日志,运行shell命令等。adb是安卓开…

【华为机试】70. 爬楼梯

文章目录70. 爬楼梯描述示例 1示例 2提示解题思路核心分析问题建模算法实现方法1:动态规划(标准解法)方法2:空间优化动态规划(最优解)方法3:递归 记忆化方法4:数学公式(…

山东大学软件学院面向对象期末复习

面向对象 文章目录面向对象04 类封装接口 抽象类05 消息,实例化,静态变量方法消息动/静态类型语言对象创建类及实例具有下面特征对象数组的创建静态数据成员构造函数06_0 继承继承是向下传递的JAVA为什么不支持多重继承继承的形式特殊化继承替换原则规范…

让 Windows 用上 macOS 的系统下载与保姆级使用教程

模拟苹果桌面软件下载:https://xpan.com.cn/s/8NFAGT 还记得 Windows 11刚发布时,很多人就说“果里果气"的,但界面确实做的漂亮。 不知道现在有多少小伙伴正用着macOS,不过我敢确定,喜欢macOS的人绝对不少&#…

嵌入式硬件篇---继电器

继电器是一种通过小电流控制大电流的电磁开关,广泛应用于自动化控制、电力系统和电子设备中。以下从工作原理、应用场景和电路特点三个方面详细介绍:一、工作原理继电器本质是电磁控制的机械式开关,核心部件包括:线圈(…

鸿蒙网络编程系列58-仓颉版TLS数字证书查看及验签示例

1. TLS数字证书验签简介 数字证书的签名验证是网络编程中一个重要的功能,它保证了数字证书是由可信任的签发方签署的,在此基础上,我们才可以信任该证书,进而信任基于该证书建立的安全通道,所以说,数字证书…

【React Native】安装配置 Expo Router

过去开发React Native,所使用的路由都是React Navigation。但是这个东西使用起来非常困难,配置无比繁琐。Expo,为了简化操作,就基于React Navigation开发了Expo Router。 Expo Router用起来就要简单的多了,配置也相对…

美国VPS服务器Linux内核参数调优的实践与验证

美国vps服务器Linux内核参数调优的实践与验证在云计算和虚拟化技术日益普及的今天,美国VPS服务器因其稳定的网络环境和优越的性价比,成为众多企业和开发者的首选。Linux内核参数的默认配置往往无法充分发挥VPS的性能潜力。本文将深入探讨美国VPS服务器上…

在Vscode中使用Kimi K2模型:实践指南,三分钟生成个小游戏

Kimi K2是一款基于多专家(MoE)架构的强大代码与代理能力基础模型。本文将通过在VS Code及其扩展Cline和RooCode中的实际应用,详细说明如何使用Kimi K2-0711-preview模型。不得不说kimi这次的K2模型就是强大,在vscode中配置使用体验…

基于SpringBoot+Uniapp球场预约小程序(腾讯地图API、Echarts图形化分析、二维码识别)

“ 🎈系统亮点:腾讯地图API、Echarts图形化分析、二维码识别”01系统开发工具与环境搭建前后端分离架构 项目架构:B/S架构 运行环境:win10/win11、jdk17前端: 技术:框架Vue.js;UI库:…

windows + phpstorm 2024 + phpstudy 8 + php7.3 + thinkphp6 配置xdebug调试

windows phpstorm 2024 phpstudy 8 php7.3 thinkphp6 配置xdebug调试 下载配置phpstudyPhp.ini配置phpstorm配置xdebug运行一会就停了配置虚拟机 0localhost_90.conf 配置php.ini配置下载 在下面地址下载合适的xdebug 放到对应的php https://xdebug.org/wizard 配置phpst…

python的pywebview库结合Flask和waitress开发桌面应用程序简介

pywebview的用途与特点 用途 pywebview是一个轻量级Python库,用于创建桌面应用程序(GUI)。它通过嵌入Web浏览器组件(如Windows的Edge/IE、macOS的WebKit、Linux的GTK WebKit),允许开发者使用HTML/CSS/Java…

C#通过HslCommunication连接西门子PLC1200,并防止数据跳动的通用方法

textEdit30.Text ReadValue<int>(() > plc.ReadInt32("DB57.DBD16"), ref _last_num).ToString();// 通用读取方法&#xff08;支持所有值类型&#xff09;private T ReadValue<T>(Func<OperateResult<T>> readFunc, ref T lastValue) w…

Linux切换到Jenkins用户解决Jenkins Host key verification failed

以root或sudo user身份, 切换到jenkins用户 su -s /bin/bash jenkins前往jenkins的home目录 cd /var/lib/jenkins/查看.ssh下是否已经有known_hosts, 有的话, 是什么内容, 正常情况下, 这时候是没有对应IP记录的 cd .ssh/ more known_hosts访问一下对应IP, 记录公钥 ssh 192.16…

7.17 Java基础 | 集合框架(下)

接上文&#xff1a; 7.16 Java基础 | 集合框架&#xff08;上&#xff09;-CSDN博客 【1】Map集合 Map 集合是一种能存储键值对的数据结构。它的主要功能是依据键&#xff08;Key&#xff09;来快速查找对应的值&#xff08;Value&#xff09; 1、声明 Map<Integer,Integer…

【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

ubuntu上面的wps2019格式很乱在复制粘贴的时候

问题&#xff1a;在复制内容到 Ubuntu 上的 WPS 2019 出现如下问题&#xff1a;列表符号、换行和缩进错乱&#xff0c;表现为每行前的点符号&#xff08;•&#xff09;变成不规则对齐或空格间距不统一。原因分析✅ 主要原因是&#xff1a;WPS 2019 在 Ubuntu 上的兼容性较差&a…

bws-rs:Rust 编写的 S3 协议网关框架,支持灵活后端接入

bws-rs&#xff1a;Rust 编写的 S3 协议网关框架&#xff0c;支持灵活后端接入 bws-rs介绍 bws-rs 是一个用 Rust 编写的轻量级 S3 协议服务端网关框架&#xff0c;旨在帮助开发者快速构建兼容 AWS S3 协议 的对象存储服务。该框架支持 S3 V4 签名校验&#xff0c;集成 Axum 作…