Web开发学习手记(三):MVC架构

Web开发学习手记(三):MVC架构

前言

在Web开发实践中,我尝试使用MVC架构进行了一次完整的后端开发。

这篇文章记录我对MVC架构的理解和实例。

MVC结构

MVC是指Model-View-Controller,即将一个项目中的数据、业务逻辑、展示三部分分开。在处理业务时,调用的顺序应当是View-Controller-Model。

Model

Model,即模型,是指数据模型。在Model里处理的事务包括数据的结构、存取、管理等,与数据库等的交互应当只在这个部分中出现。

Controller

Controller,即控制器,是指控制Model的控制器,也就是业务逻辑。在Controller里处理的事务包括业务的处理,处理用户的操作请求,使用、操作数据模型完成操作或进行响应。

View

View,即视图,是指展示给用户的部分。用户通过View与Controller交互。需要注意的是,View是广义的视图,它的形式不局限于HTML或应用GUI等。例如,在下面的用户系统实例中,View仅仅是将Handler绑定到Router上这个步骤。

实例:简单的用户系统

在这个实例中,需要实现一个支持用户注册、登录、使用JWT Token获得API权限的简单用户系统,使用JSON请求和响应,使用MongoDB作为数据库。

Model

用户的数据包括用户名和加密后的密码,在这里用一个struct管理。

在这里实现的函数有:

  • init():初始化Model。创建到MongoDB的session。
  • IsUserExists(name string):检查用户是否存在。
  • GetUserByName(name string):获取用户。这里连接到MongoDB进行查询。
  • AddUser(user User):添加用户。这里连接到MongoDB进行添加。

Controller

控制器实现了一个Handler函数BindAccount(context *gin.Context),在这个函数里进行两个业务操作的处理:

  • 注册:调用model.AddUser函数。
  • 登录:首先获取指定用户信息,比对密码。如果登陆成功,则生成一个JWT Token并响应给客户端。

View

将Controller实现的Handler函数绑定到Router上。

Middleware

除了注册登录接口之外还实现了一个API接口,用于验证API权限。验证权限使用了JWT Middleware。

在这里实现了一个函数ValidateJWT(context *gin.Context)用于验证客户端发来的JWT Token是否有效。如果无效,则在进入Handler之前就响应http.StatusUnauthorized



发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据