gocore-v2框架-脚手架生成项目结构介绍

2024-05-31 07:08

本文主要是介绍gocore-v2框架-脚手架生成项目结构介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

Github
官方文档地址-持续更新中

通过脚手架可以快速构建项目,无需从0开始创建目录结构,无需复制历史项目统一替换项目名,通过一行命令就能快速生成项目结构和基础骨架代码,并且融入接口开发理念ADM(Api-Domain-Model)分层方式来进行开发规范的约束。

目录结构如下:

.
├── Dockerfile #docker镜像打包
├── README.md #项目介绍
├── app 
│   ├── api #api接口入口
│   │   └── user.go
│   ├── cronjob #定时任务,业务逻辑处理
│   │   └── sync_user.go
│   ├── def #api接口请求参数和响应参数声明
│   │   └── def.go
│   ├── domain #最终业务逻辑处理
│   │   └── user.go
│   ├── errcode #错误码声明
│   │   └── errcode.go
│   ├── job #一次性任务,常驻任务,业务逻辑
│   │   └── init_user.go
│   ├── model
│   │   └── app #model目录,app为数据库名称
│   │       ├── mysql_client.go #数据库db建表,获取db实例
│   │       └── user.go #model文件,user是表名称
│   └── routes
│       └── routers.go  #路由规则设置
├── cmd #程序启动入口
│   ├── api.go #api接口启动命令
│   ├── cron.go #定时任务启动命令
│   ├── init.go #配置,数据库,redis等初始化
│   └── job.go #一次性任务,常驻任务启动命令
├── common #存放全局变量,公共方法
├── conf #配置文件目录
│   ├── base.go #基础通用配置,最终会合并到项目配置中
│   ├── const.go #全局常量
│   └── local.go #本地配置环境变量为local时会使用
├── go.mod
├── go.sum
├── gocore.yaml #gocore项目生成配置文件
├── main.go #程序入口
└── pkg #公共工具包

ADM(Api-Domain-Model)

项目目录结构遵循了一定的开发理念。

Api层可以理解为是请求开始结束以及组合业务的地方

  • 主要负责以下几件事情:
    • 获取请求参数并且验证请求参数的有效性
    • 对Domain领域层的实现进行拼接来组成整个接口的业务
    • 对于返回结果进行处理
  • Api接口层应该做:
    • 对用户登录态进行必要的检测
    • 控制业务场景的主流程,创建领域业务实例,并进行调用
    • 进行必要的日志纪录
    • 返回接口结果
  • Api接口层不应该做:
    • 进行业务规则的处理或者计算
    • 关心数据是否使用缓存,或进行缓存相关的直接操作
    • 直接操作数据库

Domain层负责处理具体业务逻辑

  • 将复杂业务拆分代码复用:
    • 一个方法只完成一件事情,复杂逻辑应该被拆分
    • Domain层尽量减少互相之间的调用,应该由API层拼接(API层能够一眼看出整个接口要做哪几件事)
    • 核心单测集中在Domain层中进行

Model层负责获取数据

  • 统一数据获取入口提升扩展性:
    • 每个方法只完成一件事情,比如GetInfoById、UpdateNameById、GetCountUser
    • 避免定义非常通用的方法,比如where条件以字符串传递,容易导致SQL注入问题
    • 只需要修改一个文件就可以对数据结构调整或缓存进行优化,不用修改业务逻辑层

这篇关于gocore-v2框架-脚手架生成项目结构介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1017547

相关文章

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的