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

相关推荐
会跑的葫芦怪1 天前
Go tool pprof 与 Gin 框架性能分析完整指南
开发语言·golang·gin
n8n2 天前
Gin 框架令牌桶限流实战指南
go·gin
n8n2 天前
Go tool pprof 与 Gin 框架性能分析完整指南
go·gin
kite01213 天前
Gin + JWT 认证机制详解:构建安全的Go Web应用
golang·gin·jwt
T0uken4 天前
【Golang】Gin:静态服务与模板
开发语言·golang·gin
希望201714 天前
Golang | http/server & Gin框架简述
http·golang·gin
朗迹 - 张伟15 天前
Gin-Vue-Admin学习笔记
vue.js·学习·gin
creator_Li16 天前
Gin框架学习
go·gin
kite012118 天前
Gin + Zap 日志:构建高性能、结构化的应用日志系统
golang·gin·log·zap
OxYGC18 天前
[玩转GoLang] 5分钟整合Gin / Gorm框架入门
开发语言·golang·gin