Lazy loaded image
Lazy loaded imageGo 项目模板 (整洁架构版)
字数 546阅读时长≈ 2 分钟
2024-4-11
2024-4-12
52
type
status
date
slug
summary
tags
category
icon
password

1. 背景

整洁架构思想的理论可以参考:[中文译文]。
 
在 Go 工程实际的落地过程中,经过工作中的实践总结出一套可落地的方案,参考我的项目说明:
go-clean-arch
Github
go-clean-arch
Owner
xpzouying
Updated
Apr 10, 2024
 
为了避免每次在新创建项目时,从头开始整理项目目录,总结了一套整洁架构版本的 Go 工程的可用模板:
go-clean-code-template
Github
go-clean-code-template
Owner
xpzouying
Updated
Apr 11, 2024
,直接 Fork 后可以快速修改成自己的项目。
 
特点:
  1. 使用整洁架构的项目规范。
  1. 完备的运维配置。
  1. 支持 HTTP 服务的优雅关闭。
  1. 规范化的日志。
 
模板接口文档:

2. 项目模板说明

简单介绍一些项目能力。

2.1. Makefile

通过 Makefile 文件管理,
# --- 编译 --- make build # 编译时会注入编译时的信息:git 版本、编译时间等。 # 在 ./dist/ 目录生成二进制 # --- 测试 --- make test
 
编译后,由于把编译信息已经完全注入到二进制后,可以通过命令行或者接口获取编译信息。
  1. 命令行
    1. ❯ ./dist/go-template-project --version Welcome! Version: 0.0.1 Build Time: 2024-04-11-14:55:03 Git Commit: 57dd5d530b8a6fbfe21b17b12c3236ebb4f4fe15
  1. API 接口方式(使用 httpie 命令)
    1. ❯ http :8080/api/status HTTP/1.1 200 OK Content-Length: 155 Content-Type: application/json; charset=utf-8 Date: Thu, 11 Apr 2024 06:01:19 GMT { "data": { "build_time": "2024-04-11-14:00:47", "git_branch": "main", "git_revision": "5f0120ee7e31e4a8a59116d6615168f9697f0177", "version": "0.0.1" }, "result": true }
 

2.2. 日志规范

服务运行后,日志的输出如下,
notion image
特别说明:
可以理解为对于整洁架构中的每一层模块,工程中都指定了对应标签的日志,例如标红区域会标示出是哪一个业务,middleware、usecase 等等。
 
这样做的好处是,
  1. 查看日志时,能快速定位那一模块的日志信息。
  1. 当我们搜索日志时,我们如果只关心某一层(middleware、domain、repository 等)本身的信息时,只需要用对应的日志标签进行过滤即可。比如想查看 HTTP 中间件的日志时,使用 middleware 标签过滤即可。
    1. notion image
       
 
上一篇
[论文翻译] - 如何阅读一篇论文 / How to Read a Paper
下一篇
实现微信支付接入

评论
Loading...