跳到主要内容

Golang 和 MongoDB 中的六边形软件架构

Github StackBlitz

本项目提供了一个简单的产品目录微服务,用于演示六边形软件架构的原则。该微服务暴露了一个 RESTful API,允许消费应用程序对产品目录执行 CRUD 操作。该微服务使用 Golang 开发,产品目录数据持久化在 MongoDB 仓库中。

Hexagonal Architecture

先决条件

  • Go 1.18 或更高版本
  • MongoDB
  • Go 模块

设置

  1. 克隆仓库

    git clone https://github.com/gofiber/recipes.git
    cd recipes/hexagonal
  2. 安装依赖

    go mod tidy
  3. config.json 文件中配置 MongoDB 连接

    {
    "DB_URI": "your_mongodb_uri",
    "DB_Name": "your_db_name"
    }

运行应用程序

  1. 运行应用程序

    go run main.go
  2. 服务器将在 http://localhost:3000 启动。

端点

方法URL描述
GET/api/v1/products检索所有产品
GET/api/v1/product/:id根据 ID 检索产品
POST/api/v1/product创建新产品
PUT/api/v1/product/:id更新现有产品
DELETE/api/v1/product/:id删除产品

示例请求

获取所有产品

curl -X GET http://localhost:3000/api/v1/products

根据 ID 获取产品

curl -X GET http://localhost:3000/api/v1/product/1

创建新产品

curl -X POST http://localhost:3000/api/v1/product -d '{"name": "New Product", "price": 100}' -H "Content-Type: application/json"

更新产品

curl -X PUT http://localhost:3000/api/v1/product/1 -d '{"name": "Updated Product", "price": 150}' -H "Content-Type: application/json"

删除产品

curl -X DELETE http://localhost:3000/api/v1/product/1

六边形架构

六边形架构,也称为端口和适配器架构,是一种设计模式,用于创建松散耦合的应用程序组件,这些组件可以通过端口和适配器轻松连接到其软件环境。这种架构允许应用程序能够同样被用户、程序、自动化测试或批处理脚本驱动,并能够独立于其最终的运行时设备和数据库进行开发和测试。

附加信息

有关六边形架构的更多信息,您可以参考以下资源