第十四章 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. 查看参数是否已接收到

相关推荐
不会聊天真君6472 天前
介绍(gin笔记第一期)
笔记·gin
ZHENGZJM3 天前
Server-Sent Events (SSE) 接口实现
架构·go·gin
ZHENGZJM3 天前
统一响应封装与 API 错误处理
react.js·go·gin
ZHENGZJM3 天前
仓库抓取与内容提取
go·gin
GDAL5 天前
gin.H 深入全面讲解
gin·h
呆萌很5 天前
【Gin】参数处理练习题
gin
GDAL5 天前
gin.Default() 深入全面讲解
golang·go·gin
GDAL6 天前
为什么选择gin?
golang·gin
ZHENGZJM10 天前
Gin 鉴权中间件设计与实现
中间件·gin
ZHENGZJM10 天前
认证增强:图形验证码、邮箱验证与账户安全
安全·react.js·go·gin