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

第十四章 gin基础

文章目录

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

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")id, _ := strconv.Atoi(c.Query("id"))//去数据库中查询该用户信息fmt.Printf("拿到用户名:%s, ID:%d\n", u, id)
  1. 发送带参数请求
    在这里插入图片描述

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

http://www.dtcms.com/a/283901.html

相关文章:

  • Spring Boot 中 META-INF 的作用与功能详解
  • 荷塘水上闯关游戏:Python OpenGL 3D游戏开发实战详解
  • 简单实现一个接口限流
  • 逆向破解京东评论加密参数|Python动态Cookie解决方案
  • 基于 Electron + Vue 3 的桌面小说写作软件架构设计
  • 共用体(联合体)
  • React Native 基础tabBar和自定义tabBar - bottom-tabs
  • Python编程进阶知识之第二课学习网络爬虫(requests)
  • 【真·CPU训模型!】单颗i7家用本,4天0成本跑通中文小模型训练!Xiaothink-T6-mini-Preview 技术预览版开源发布!
  • 对话弋途科技:当AI重构汽车大脑,一场车载操作系统的“觉醒年代“开始了
  • 【理想汽车智驾方案介绍专题 -1】端到端+VLM 方案介绍
  • 113:路径总和 II
  • Go语言时间控制:定时器技术详细指南
  • uni-app 配置华为离线推送流程
  • Go语言高并发聊天室(三):性能优化与压力测试
  • 【物联网】基于树莓派的物联网开发【11】——树莓派无法启动修复解决方案
  • Transformer从入门到精通
  • Spring Boot整合阿里云OSS企业级实践:高可用文件存储解决方案
  • 【Docker基础】Docker-compose基础认知:从核心概念到实战解析
  • 闽南话里的俗语(俚语、谚语、歇后语)
  • S7-1200 模拟量模块全解析:从接线到量程计算
  • 苍穹外卖项目日记(day11)
  • Linux内核ICMP协议实现深度解析:网络控制的智慧引擎
  • 《C++初阶之STL》【auto关键字 + 范围for循环 + 迭代器】
  • 基于typescript严格模式以实现undo和redo功能为目标的命令模式代码参考
  • Python-TCP编程-UDP编程-SocketServer-IO各种概念及多路复用-asyncio-学习笔记
  • 从0开始学习R语言--Day49--Lasso-Cox 回归
  • 在UniApp中防止页面上下拖动的方法
  • git@github.com: Permission denied (publickey).
  • 算法竞赛备赛——【图论】求最短路径——Dijkstra