Gin从入门到精通—搭建MVC项目结构学习路由配置

简介: Gin从入门到精通—搭建MVC项目结构学习路由配置

一、前言

在前面的章节中,我们学习了Gin框架的本地搭建过程。

通过我们的学习,我们知道了,Gin框架是不指定项目的自由的框架。

但是在实际生产项目中,常用的配置文件、路由文件和MVC架构,还是必须的。

二、什么是路由

从网络的角度看,路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议。

在框架的角度看,路由对应的是URL访问对应指向的项目内部方法。

路径对应的方法并不是直接绑定的,而是通过框架内部的路由组件进行绑定,这样做的好处是非常自由,我们不必因为要修改对外的访问路径去修改已经写好的控制器的名称。

所以,认识一个框架,认识路由组件的配置是非常重要的。

三、什么是MVC

广义看MVC,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。

一般在创建项目目录中,我们把项目文件夹分为

  • controller 控制器,实现业务逻辑
  • model 模型,实现数据操作
  • view 视图,渲染用户界面

四、认识Gin的路由组件

1. 基础方式

router := gin.Default()
  router.GET("/someGet", getting)
  router.POST("/somePost", posting)
  router.PUT("/somePut", putting)
  router.DELETE("/someDelete", deleting)
  router.PATCH("/somePatch", patching)
  router.HEAD("/someHead", head)
  router.OPTIONS("/someOptions", options)

这是一个非常简单的事例,我们通过gin.Default()得到了一个gin 路由。

组件可以通过这样的方式注册路由,并指定访问方式,Gin路由支持常见的访问方式。

2. 路由分组

路由分组解决的是诸如接口版本过多,便于区分,以及不同业务模块下的配置。

router := gin.Default()
  // 简单的路由组: v1
  v1 := router.Group("/v1")
  {
    v1.POST("/login", loginEndpoint)
    v1.POST("/submit", submitEndpoint)
    v1.POST("/read", readEndpoint)
  }
  // 简单的路由组: v2
  v2 := router.Group("/v2")
  {
    v2.POST("/login", loginEndpoint)
    v2.POST("/submit", submitEndpoint)
    v2.POST("/read", readEndpoint)
  }

对应上面事例的访问路径为

/v1/login

/v1/submit

/v1/read

/v2/login

/v2/submit

/v2/read

虽然指向的是同一个方法,但是在实际项目中,我们可以指向不同的方法。

五、视图渲染

Gin中的视图通过gin.Context..HTML实现。

简单案例如下

router := gin.Default()
  router.LoadHTMLGlob("templates/*")
  router.GET("/index", func(c *gin.Context) {
    c.HTML(http.StatusOK, "index.tmpl", gin.H{
      "title": "Main website",
    })
  })
  router.Run(":8080")

视图文件为

<html>
  <h1>
    {{ .title }}
  </h1>
</html>
相关文章
|
1月前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
45 3
SpringBoot入门 - 对Hello world进行MVC分层
|
1月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
34 4
|
1月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
17 1
 SpringBoot入门(3) - 对Hello world进行MVC分层
|
2月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
46 1
SpringBoot入门(3) - 对Hello world进行MVC分层
|
1月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
本文介绍了如何在Spring Boot项目中实现MVC分层架构,通过将代码划分为controller、service、dao和entity四个部分,实现高内聚低耦合的设计。示例项目包括用户增删查改功能,详细展示了各层的具体实现及运行测试。
42 11
|
1月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
24 2
|
3月前
|
前端开发 Java Spring
关于spring mvc 的 addPathPatterns 拦截配置常见问题
关于spring mvc 的 addPathPatterns 拦截配置常见问题
280 1
|
4月前
|
前端开发 Java Spring
Java 新手入门:Spring Boot 轻松整合 Spring 和 Spring MVC!
Java 新手入门:Spring Boot 轻松整合 Spring 和 Spring MVC!
76 0
|
6月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
102 1
|
6月前
|
前端开发 Java 关系型数据库
在Spring3 MVC中五步配置集成注解方式Hibernate3
在Spring3 MVC中五步配置集成注解方式Hibernate3
46 3