第十四章 gin基础

文章目录

Gin快速搭建一个web服务

  1. 下载包
go 复制代码
\\新建一个文件,文件名gitstudy,然后右击使用vscode打开,初始化目录,并下载包
go mod init ginstudy 
go get -u github.com/gin-gonic/gin
  1. 新建main.go
go 复制代码
package main

import (
	"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串的写法
go 复制代码
// 定义一个函数,用于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串常用的格式,这是相对标准的格式,可以给前端返回数据都按这个格式
go 复制代码
	/*
		{
			"status": 200, //请求已经收到,后端处理返回给前端状态码,命名自定义code、statusCode
			"message": "查询成功"
			"data": {
				"name": "马云",
				"age": "18",
				"address": "杭州",
			}
		}
	*/

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

go 复制代码
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请求

go 复制代码
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.配置接收参数

go 复制代码
	//接受参数
	u := c.Query("username")
	id, _ := strconv.Atoi(c.Query("id"))
	//去数据库中查询该用户信息
	fmt.Printf("拿到用户名:%s, ID:%d\n", u, id)
  1. 发送带参数请求

  2. 查看参数是否已接收到

相关推荐
Code季风11 小时前
从内存机制到代码实现:深拷贝与浅拷贝深度解析
性能优化·go·gin
一条闲鱼_mytube2 天前
gin go-kratos go-zero框架对比
开发语言·golang·gin
C墨羽3 天前
使用Gin框架构建高并发教练预约微服务:架构设计与实战解析
微服务·架构·golang·gin
痴人说梦梦中人5 天前
Gin框架统一响应与中间件机制学习笔记
网络安全·中间件·go·gin
Go Dgg5 天前
【Go + Gin 实现「双 Token」管理员登录】
开发语言·golang·gin
Jerry Lau9 天前
go go go 出发咯 - go web开发入门系列(二) Gin 框架实战指南
前端·golang·gin
Code季风9 天前
微服务分布式配置中心:Gin Web 服务层与 gRPC 服务层集成 Nacos 实战
分布式·微服务·rpc·架构·go·gin·consul
Code季风10 天前
Gin Web 层集成 Viper 配置文件和 Zap 日志文件指南(下)
前端·微服务·架构·go·gin
Code季风10 天前
Gin Web 服务集成 Consul:从服务注册到服务发现实践指南(下)
java·前端·微服务·架构·go·gin·consul