普通的,并不是很好用的博客项目,主要用于实践类似于clean-arch和ddd的项目结构。使用gin
作为http
框架实现RESTful API
,使用ent
作为orm
框架。数据库使用mysql
。
如果你正在寻找一个好用的博客网站,我推荐使用Hugo。
├── api
├── cmd
├── configs
├── internal
│ ├── conf
│ ├── domain
│ ├── repo
│ ├── server
│ ├── service
│ └── usecase
├── pkg
└── test
api
:api
的定义,gin
相关的所有逻辑都在这一层实现,只做表单验证,调用internal/service
中的接口实现相应逻辑cmd
:存放main.go
configs
:存放配置文件internal
:存放应用代码domain
:领域模型建模,理应使用充血模型,但是博客网站实在是没什么逻辑,所以很空旷,只提供了repo
接口和usecase
接口repo
:持久化层。实现数据库与缓存的调用逻辑,实现domain
层的repo
接口。usecase
:用例层。只用来对上层提供repo
层的使用用例。不应有复杂逻辑。service
:服务层。用于提供给网络服务调用的接口。做数据组装,调用usecase
来访问repo
。server
:调用api
层的注册方法,连接service
与api
层。并提供http server
用于启动。conf
:应用内配置。可以在这里实现Check
方法检测配置正确与否。
pkg
:存放公用代码,在这里放了log
与config
包,分别用于日志输出与配置文件读取。log
库使用logrus
实现,为了松耦合,提供接口供应用调用,但这部分我做的不够好。test
:存放测试相关文件,sql
文件与docker-compose.yml
等
git clone https://github.com/samb233/easyblog.git
编译,main.go
文件位于cmd
目录下
go build -o easyblog cmd/easyblog/main.go
运行
./easyblog
-
获取文章列表
GET
http://localhost:9999/api/v1/articles?page=1
-
获取文章
GET
http://localhost:9999/api/v1/articles/1
-
新增文章
POST
http://localhost:9999/api/v1/articles
,可用form-data
或x-www-form-urlencoded
,其中title
为required
-
修改文章
POST
http://localhost:9999/api/v1/articles/1
-
删除文章
DELETE
http://localhost:9999/api/v1/articles/1