go语言gin框架学习

news/2024/11/9 0:06:20/

让框架去做http解包封包等,让我们的精力用在应用层开发
MVC模式
M: model,操作数据库gorm
view 视图 处理模板页面
contoller 控制器 路由 +逻辑函数

解决gin相关代码飘红的问题

记得启用gomodule
go env -w GO111MODULE=on然后到相应目录下执行 go mod init xxx
go mod tidy 
这样应该可以解决代码飘红,说找不到对应包的问题由于墙的原因 需要更换代理请执行 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

一、初步使用

  • 搭建好go的环境,目录结构如下
    在这里插入图片描述
//main.go
package mainimport "github.com/gin-gonic/gin"
func main()	{gin.Default()
}
go mod init quickstart
go mod tidy
  • 如果下载失败,换成golang官方源试试
 go env -w GOPROXY=https://proxy.golang.org,direct
  • 搭建一个基础的后端
//main.go
package mainimport "github.com/gin-gonic/gin"
func getuser(ctx *gin.Context){ctx.JSON(200,gin.H{"username":"you",})
}
func main()	{//获取引擎对象,即路由对象r:=gin.Default()//路由映射函数r.GET("/user",getuser)//启动:默认本机8080端口 类似django的runserverr.Run("127.0.0.1:8081")
}

访问相应路径如下
在这里插入图片描述

二、路由系统初识

2.1 服务端对客户端发起各种请求方式的处理

2.1.1 同一个资源的不同请求方式

//路由映射函数同一个路由,不同的方法执行不同的逻辑
r.GET("/book", func(context *gin.Context) {context.JSON(200,gin.H{"msg":"查询成功",})})
r.POST("/book", func(context *gin.Context) {context.JSON(200,gin.H{"msg":"新增成功",})})r.PUT("/book", func(context *gin.Context) {context.JSON(200,gin.H{"msg":"修改成功",})})r.DELETE("/book", func(context *gin.Context) {context.JSON(200,gin.H{"msg":"删除成功",})
})

2.1.2 Any

// any请求方式都可以访问
r.Any("/index", func(context *gin.Context) {context.JSON(200,gin.H{"msg":"任何方式都可以访问",})})

2.1.3 NoRoute


//所有路由都无法访问时,不管何种请求方式,走noroute时返回相应信息
r.NoRoute( func(context *gin.Context) {context.JSON(404,gin.H{"msg":"404 not find",})})

2.2 路由分组

  • gin框架没有像django那样的路由分组需要自己写

http://www.ppmy.cn/news/34593.html

相关文章

【Java】弄清方法重写,看这一篇就够了|由浅入深,保姆级讲解

作者:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】;该专栏专注于Java相关知识&#xff0c…

在 AI 上训练 AI:ChatGPT 上训练另一种机器学习模型

ChatGPT 可以像 Linux 终端一样运行,并在给出以下提示时返回执行结果。下面我来带大家操作起来。 文章目录终端操作训练机器学习模型镜像演示终端操作 输入:I want you to act as a Linux terminal. I will type commands and you will reply with what…

课设-机器学习课设-实现新闻分类

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :课设-机器学习 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,…

基于OpenCV的人脸识别

目录 🥩 前言 🍖 环境使用 🍖 模块使用 🍖 模块介绍 🍖 模块安装问题: 🥩 OpenCV 简介 🍖 安装 OpenCV 模块 🥩 OpenCV 基本使用 🍖 读取图片 🍗 【…

MHA实现mysql数据库高可用

目录 MHA原理 MHA工具包 MHA实现mysql高可用实战 MHA原理 ①MHA利用 SELECT 1 As Value 指令判断master服务器的健康性,一旦master 宕机,MHA 从宕机崩溃的master保存二进制日志事件(binlog events) ②识别含有最新更新的slave ③应用差异的中继日志&…

【前缀和】

前缀和前缀和子矩阵的和结语前缀和 输入一个长度为 n的整数序列。 接下来再输入 m 个询问,每个询问输入一对 l,r 对于每个询问,输出原序列中从第 l 个数到第 r个数的和。 输入格式第一行包含两个整数 n和 m 第二行包含 n个整数,表示整数…

ES-笔记

1、索引 查看所有索引 GET /_cat/indices?v健康状况 GET _cluster/health GET _cluster/health?levelindices分词器 POST _analyze {"analyzer": "ik_max_word","text": "四川森森管理公司" }索引数据拷贝 POST _reindex {&quo…

java学习笔记——抽象类

2.1 概述 由来 父类中的方法,被他的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了。我们把没有主体的方法称为抽象方法。java语法规定,包含抽象…