0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于gin封装的web服务框架升级

马哥Linux运维 来源:马哥Linux运维 2023-12-05 09:33 次阅读

自动生成框架内容可前往开源项目gingen按如下命令执行


mkdir testServer
cd testServer
./gingen init --mod testServer

项目地址:github.com/Benny66/gin…

app

项目工程主要代码文件夹目录,包括api层、model模型数据层、service逻辑层;

api层请求入口处理,参数校验,数据返回

model模型数据层是数据交互层,常见的数据库操作方法,数据聚合方法

逻辑层是项目核心业务逻辑的处理层;

api层

api层连同schema模块接受处理请求参数,做数据校验、清洗返回等


type UserInterface interface {
  Login(context *gin.Context)
  Refresh(context *gin.Context)
  Logout(context *gin.Context)
  UpdatePassword(context *gin.Context)
}


var UserApi UserInterface = &userApi{}


type userApi struct{}

model【模型数据层】

model就是对数据库表名和表内字段进行模型定义的模块。

ModelTime定义自动转换存储和查询时间格式

可定义模型对应的表名称和表字段

dao 是基于gorm对数据进行增删查改的模块,通过inteface接口暴露调用接口

Create和update 对数据的创建和修改操作均需要开启事务,在逻辑层进行控制开启、回滚和提交。

常见封装的方法包括增删查改、分页查询(Paginate)、查询全部(FindAll)、按条件查询(WhereQuery)、关联查询(Joins)、预加载(Preloads)等等方法


func (dao *userDao) Create(tx *gorm.DB, data *model.User) (rowsAffected int64, err error) {
  db := tx.Create(data)
  if err = db.Error; db.Error != nil {
    return
  }
  rowsAffected = db.RowsAffected
  return
}
func (dao *userDao) WhereQuery(query interface{}, args ...interface{}) *userDao {
  return &userDao{
    dao.gm.Where(query, args...),
  }
}
func (dao *userDao) Joins(query string, args ...interface{}) *userDao {
  return &userDao{
    dao.gm.Joins(query, args),
  }
}

service【逻辑层】

service【逻辑层】是主要的代码层,开发人员基本上在这个模块上进行开发和修复bug,实现各自项目的逻辑,是最核心的内容

api模块是对接路由的方法入口,基本上一个业务模块对应一个文件,例如登录模块的各接口可以命名为user.go

define模块用于定义数据结构类型的目录,不同的业务类型和逻辑,需要定义不同的请求参数和返回参数结构,例如定义type UserLoginApiReq struct来接收登录接口的参数类型

service模块,顾名思义就是业务逻辑服务的处理模块,其中包括对请求数据参数的校验、业务逻辑处理数据,调用数据层进行保存数据库

router.go对接路由,统一定义

config【系统配置】

系统的配置模块,config.go,包括服务信息、数据库信息、日志配置信息、ws配置信息等等

db【数据库】

数据库文件夹模块,目前使用的mysql、redis数据存储

migrations【数据迁移】

数据迁移文件模块,项目初始化或升级的时候可进行数据库的数据库迁移脚本命令;

需要在根目录添加install.lock才可进行数据库迁移执行

public【公共模块】

项目的公共模块,包括:image、html、css、js等文件

routers【路由】

启动web服务时,初始化gin的路由模块,启动服务

runtime

runtime模块,保存日志logs、缓存cache等文件

utils

项目框架需要的工具包,包括:自我封装的库以及调用第三方封装的库






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MySQL
    +关注

    关注

    1

    文章

    798

    浏览量

    26403
  • Schema
    +关注

    关注

    0

    文章

    4

    浏览量

    6451
  • Redis
    +关注

    关注

    0

    文章

    370

    浏览量

    10831

原文标题:基于gin的封装的web服务框架升级,新增自动生成代码并开源仓库

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【米尔-全志T113-i开发板试用】4、使用Gin框架搭建简易的web server和提供设备信息获取接口

    快速的路由功能、中间件支持、参数解析、JSON/XML响应等功能,使得编写Web应用变得简单和高效。可以使用Gin框架来构建RESTful API、Web
    发表于 02-22 16:23

    五大Python Web框架详解

    用于Python的、简单而非常有用的Web框架,其主要作用是以尽可能少的操作将Web服务器与Python代码连接,其功能包括内置的分析功能、灵活的插件系统以及一次运行多个HTTP
    发表于 02-06 17:17

    Web框架使用哪些编程语言?

    实现js在服务器端的编译,而且拥有更好的组织代码,提升复用性,非常适合在分布式设备上运行数据密集型的实时应用。2. PHPPHP是Web架构开发常用语言,PHP开发了很多Web框架,如
    发表于 03-28 16:53

    主流web前端技术框架

    Web架构是为解决Web开发中开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮助快速实现Web开发,并解决开发过程中遇到的常规问题!以下是2018年常用的
    发表于 03-28 16:56

    Web网络服务模块实现程序自动升级功能

    Web网络服务模块——下载升级文件
    发表于 04-03 10:55

    寻找!嵌入式linux利用web服务升级

    利用http搭建一个服务器,通过web端操作,+后台服务端+终端升级嵌入式linux通过服务端后台对设备进行远程
    发表于 06-24 11:11

    基于工作流技术的复合语义Web服务框架

    随着Internet和Web应用的快速发展,Web应用模式及Web服务的异构和分散问题日益突出,如何复合繁复而庞大的Web
    发表于 03-31 10:01 16次下载

    一种支持QoS约束的语义Web服务发现框架

    针对当前语义Web服务发现缺乏OoS约束的问题,构建一个支持QoS约束的语义Web服务发现框架。使用QoS认证中心确保QoS信息的动态更新。
    发表于 03-31 10:17 10次下载

    基于Web 服务的应用集成框架的研究和应用

    文中阐述了企业信息化的现状及其存在的问题,并分析了传统企业应用集成(EAI)的不足和缺陷,提出了基于Web 服务的应用集成框架(WS-EAI)。并对WS-EAI 框架组成进行了系统阐
    发表于 05-25 13:55 10次下载

    基于WSDM的Web服务管理框架设计与实现

    随着Web 服务的广泛应用,监控和管理这些IT 资源的需求也变得越来越迫切。为了对Web 服务进行有效的管理,OASIS 组织提出了Web
    发表于 01-15 17:04 14次下载

    基于扩展UDDI语义Web服务发现框架的研究

    传统Web服务采用简单分类和关键字的服务发现方法,造成查准率与查全率低。语义Web服务Web
    发表于 02-25 16:03 19次下载

    面向Web服务的电力系统信息集成平台框架的研究白雨

    面向Web服务的电力系统信息集成平台框架的研究_白雨
    发表于 03-15 08:00 0次下载

    Web服务组合匹配框架研究

    在现有服务发现方法中,单一考虑原子服务服务组合的方式难以满足用户日益增长的需求。针对该问题,设计一个基于模型转换的Web服务匹配
    发表于 03-05 13:35 0次下载
    <b class='flag-5'>Web</b><b class='flag-5'>服务</b>组合匹配<b class='flag-5'>框架</b>研究

    基于用户社群关系的Web服务发现系统框架

    。基于形式化后的社群关系提出了一个差分式服务发现策略,构建了一个基于用户社群关系的Web服务发现系统框架,按照Web
    发表于 03-07 14:18 0次下载
    基于用户社群关系的<b class='flag-5'>Web</b><b class='flag-5'>服务</b>发现系统<b class='flag-5'>框架</b>

    在micropython上搭建web框架web服务——新生代web框架:mpy-urouter

    大家好!之前我给 micropython 开发过一个名为 micro-route 的web框架,在使用的过程中发现这个框架在设计上有很多的缺陷,而且是经过一个星期的时间赶工出来的,代码质量不太
    发表于 12-29 18:56 5次下载
    在micropython上搭建<b class='flag-5'>web</b><b class='flag-5'>框架</b>和<b class='flag-5'>web</b><b class='flag-5'>服务</b>——新生代<b class='flag-5'>web</b><b class='flag-5'>框架</b>:mpy-urouter