写点什么

【电商实战 01】如何快速编写 api 层和 model 层?

作者:王中阳Go
  • 2022-11-10
    北京
  • 本文字数:1216 字

    阅读完需:约 4 分钟

【电商实战01】如何快速编写api层和model层?

上期回顾

上一篇文章介绍了:【准备工作00】用“抄作业”的思路带你快速上手电商实战项目,看完的朋友收获满满,昨天私信我的朋友不少。


没看的朋友建议先看上面的文章,再继续今天的内容。


对了,有位朋友建议我把这个电商实战系列做个编号,方便后面找资料。必须满足这个要求!也欢迎大家私信我多提宝贵建议。


准备工作篇我们就按程序员的习惯以 0 开头吧,作为 00 篇。


这篇作为 01 篇,欢迎朋友们关注我,日常催更。

适合人群:

有一定 Go 基础,想快速上手商业实战项目的伙伴

视频版:

【电商实战】gf工具怎么用?api层和model层怎么编写?

关键问题:

  1. 本文重点介绍 gf gen dao,是 CLI 中最频繁使用、也是框架设计的工程规范能否准确落地的关键命令。该命令用于生成 dao 数据访问对象、do 数据转化模型及 entity 实例数据模型 Go 代码文件。

  2. model 中的模型分为两类:数据模型和业务模型。


  • 数据模型:通过 CLI 工具自动生成 model/entity 目录文件,数据库的数据表都会生成到该目录下,这个目录下的文件对应的模型为数据模型。数据模型即与数据表一一对应的数据结构,开发者往往不需要去修改并且也不应该去修改,数据模型只有在数据表结构变更时通过 CLI 工具自动更新。数据模型由 CLI 工具生成及统一维护。

  • 业务模型:业务模型即是与业务相关的数据结构,按需定义,例如 service 的输入输出数据结构定义、内部的一些数据结构定义等。业务模型由开发者根据业务需要自行定义维护,定义到 model 目录下。


  1. 注意事项,需要手动编译的数据库类型:gen dao 命令涉及到数据访问相关代码生成时,默认支持常用的若干类型数据库。如果需要 Oracle 数据库类型支持,需要开发者自己修改源码文件后自行本地手动编译生成 CLI 工具随后安装,因为这两个数据库的驱动需要 CGO 支持,无法预编译生成给大家直接使用。图片

  2. 更多细节问题建议大家直接查看官方文档,不作为我电商实战系列的重点:https://goframe.org/pages/viewpage.action?pageId=3673173

开发流程

我梳理了基于 GoFrame 框架最新 V2 版本的开发流程:


  1. 设计表结构,初始化项目,修改配置文件

  2. 使用 gf gen dao 生成对应的 dao/do/model

  3. 编写 api 层:定义业务侧数据结构,提供对外接口的输入/输出数据结构

  4. 编写 model 层:定义数据侧数据结构,提供对内的数据处理的输入/输出数据结构

  5. 编写 logic 层,自动生成 service 层代码。(通过配置 goland File Watcher 自动生成,也可以通过 gf gen service 手动执行脚本生成,建议前者)

  6. 在 service 层代码生成 RegisterXX()方法后,在对应的 logic 模块注册服务(每个模块只需要写一次)

  7. 编写 controller 层,接收/解析用户输入的参数,调用 service 层的服务。

  8. 注册路由,对外暴露接口,比如这个项目是编写 cmd.go 文件。

  9. 在 main.go 中 加入一行 _ "project-name/internal/logic" (只需写一次)

  10. 在 main.go 中加入一行 _ "github.com/gogf/gf/contrib/drivers/mysql/v2" (如果你使用的是 mysql;只需写一次)

一起学习

欢迎和我们一起学 Go,坚持打卡,互相监督。


可以在 InfoQ 私信我。或者通过下面的方式联系我,一起学习。

发布于: 2022-11-10阅读数: 50
用户头像

王中阳Go

关注

靠敲代码在北京买房的程序员 2022-10-09 加入

公众号:程序员升级打怪之旅👍微信:wangzhongyang1993👍InfoQ优质创作者👍掘金签约作者👍B站&掘金&CSDN&思否等全平台账号:王中阳Go

评论 (1 条评论)

发布
用户头像
本文重点介绍 gf gen dao,是CLI中最频繁使用、也是框架设计的工程规范能否准确落地的关键命令。该命令用于生成dao数据访问对象、do数据转化模型及entity实例数据模型Go代码文件。
2022-11-10 11:03 · 北京
回复
没有更多了
【电商实战01】如何快速编写api层和model层?_golang_王中阳Go_InfoQ写作社区