go项目设计 | 青训营笔记

96 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

以blog项目为例

目录结构

blog-service
├── configs
├── docs
├── global
├── internal
│   ├── dao
│   ├── middleware
│   ├── model
│   ├── routers
│   └── service
├── pkg
├── storage
├── scripts
└── third_party
  • configs:配置文件。

  • docs:文档集合。

  • global:全局变量。

  • internal:内部模块。

    • dao:数据访问层(Database Access Object),所有与数据相关的操作都会在 dao 层进行,例如 MySQL、ElasticSearch 等。
    • middleware:HTTP 中间件。
    • model:模型层,用于存放 model 对象。
    • routers:路由相关逻辑处理。
    • service:项目核心业务逻辑。
  • pkg:项目相关的模块包。

  • storage:项目生成的临时文件。

  • scripts:各类构建,安装,分析等操作的脚本。

  • third_party:第三方的资源工具,例如 Swagger UI。

数据库

数据库包含两张表,分别是文章表,标签表

路由

在 RESTful API 中 HTTP 方法对应的行为动作分别如下:

  • GET:读取/检索动作。
  • POST:新增/新建动作。
  • PUT:更新动作,用于更新一个完整的资源,要求为幂等。
  • PATCH:更新动作,用于更新某一个资源的一个组成部分,也就是只需要更新该资源的某一项,就应该使用 PATCH 而不是 PUT,可以不幂等。
  • DELETE:删除动作。

文章标签API

功能HTTP 方法路径
新增标签POST/tags
删除指定标签DELETE/tags/:id
更新指定标签PUT/tags/:id
获取标签列表GET/tags

文章API

功能HTTP 方法路径
新增文章POST/articles
删除指定文章DELETE/articles/:id
更新指定文章PUT/articles/:id
获取指定文章GET/articles/:id
获取文章列表GET/articles