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

三十二、初识Gin框架

目录

一、搭建web项目

1、引入gin依赖

2、搭建项目结构

二、路由绑定

1、创建路由

解释:

2、创建实例化模块

3、创建具体事项

4、main中添加注册


一、搭建web项目

1、引入gin依赖

在项目路径下,终端中输入

go get -u github.com/gin-gonic/gin

2、搭建项目结构

最终搭建效果: 

在cmd包下搭建main方法,main方法中直接复制 https://github.com/gin-gonic/gin 下以下内容

 

完成后即可运行访问(localhost:8080/ping) 进行访问,当然要对Run进行err预判。

修改如下

err := r.Run()
	if err != nil {
		return
	} 

二、路由绑定

1、创建路由

在实际开发中不可能将方法实现放在main中,所以在internal包下创建新包api包,并在包下创建routers.go

const (
	rootPath = "/api/"
)

func CmsRouter(r *gin.Engine) {
	root := r.Group(rootPath)
	//初始化
	cmsApp := services.NewCmsApp()
	//路由绑定
	root.GET("/hello", cmsApp.Hello)
}
解释:

定义常量路径前缀 api,创建函数CmsRouter,使用r.Group函数进行分组,分组可以定义一些方法是测试方法或需要/不需要鉴权的方法,提升代码可读性等好处

在services包下创建cms.go并在其中完成一些实例返回

在services包下创建hello.go,并在其中完成具体业务逻辑

最后在main方法中完成注册使路由生效

2、创建实例化模块

cms.go具体代码

package services

//初始化

type CmsApp struct {
}

func NewCmsApp() *CmsApp {
	return &CmsApp{}
}
3、创建具体事项

hello.go具体代码

package services

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func (c *CmsApp) Hello(ctx *gin.Context) {
	ctx.JSON(http.StatusOK, gin.H{
		"message": "pong",
	})
}
4、main中添加注册
func main() {
	r := gin.Default()
	//注册使生效
	api.CmsRouter(r)
	err := r.Run()
	if err != nil {
		return
	} // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

最终再次访问localhost:8080/api/hello 即可访问到接口


http://www.kler.cn/a/288541.html

相关文章:

  • PyTorch版本的3D网络Grad-CAM可视化实验记录
  • [CKS] Create/Read/Mount a Secret in K8S
  • ubuntu下安装 git 及部署cosyvoice(2)
  • SQLI LABS | Less-40 GET-BLIND Based-String-Stacked
  • 网络安全:挑战、策略与未来趋势
  • 【数据分享】2024年我国省市县三级的生活服务设施数量(46类设施/Excel/Shp格式)
  • chunqiude
  • JS设计模式之“幽灵工厂” - 抽象工厂模式
  • 【贪心算法】区间类算法题(整数替换、俄罗斯套娃、重构字符串等、C++)
  • OpenAI API: Can I remove the line break from the response with a parameter?
  • OpenCVSharp中基本绘图函数
  • Qt Dialog退出事件
  • Golang使用Quic-Go开源库实现Quic客户端和服务端
  • Unity接入飞行遥杆外设
  • 【BES2500x系列 -- RTX5操作系统】Battery模块 -- 创建电池检测定时器 --(十五)
  • 利用Spring Boot的@Transactional注解保障业务数据的一致性
  • 2024 【Delphi 12】苹果ios开发环境配置(五星保姆级)
  • UML(ER) manual book
  • 深入理解Java序列化:从入门到实践
  • c++ std::advance 使用简介
  • MySQL库表设计规范
  • IMU助力预测青少年脊柱侧弯
  • Apache DolphinScheduler大规模任务调度系统对大数据实时Flink任务支持
  • TikTok运营:IP地址如何影响TikTok的内容运营?
  • 内存管理篇-20 Linux虚拟内存管理
  • 亚信安全荣获“2024年网络安全优秀创新成果大赛”优胜奖