搜索
首页后端开发Golang使用 Torpedo 创建您的第一个项目:分步指南

Creating Your First Project with Torpedo: A Step-by-Step Guide

在 Golang 中构建应用程序时,遵守六边形架构的原则可以确保代码干净、模块化和可维护。借助 Torpedo,您可以轻松实现此架构,同时加快开发过程。在本指南中,我们将逐步介绍如何使用 Torpedo 创建您的第一个项目,从安装到生成实体和用例。

这篇文章是已记录的快速入门指南的摘要

1. 鱼雷入门

在我们深入创建项目之前,请确保您的系统上安装了 Go。然后,按照安装指南中的说明安装 Torpedo

这个 CLI 工具将为您处理项目生成、实体创建和用例脚手架。安装完成后,您就可以创建您的第一个项目了。

2. 设置你的第一个项目

让我们开始使用我们的第一个使用 Torpedo 构建的应用程序吧!我们将开发一款名为 Booking Fly 的机票预订应用程序。

安装了 Torpedo 后,创建新项目就像运行一样简单:

mkdir booking-fly && cd booking-fly
torpedo init

此命令将生成文件夹 .torpedo,您应该在其中定义实体和用例。有关此文件夹的更多信息可以在 .torpedo dir struct

中找到

3. 定义您的第一个实体

接下来,您需要定义域实体。实体是应用程序业务逻辑中的核心对象,代表用户、产品或订单等事物。

要定义您的第一个实体,请在 .torpedo/entities 目录下创建一个 YAML 文件。例如,让我们创建一个简单的 User 实体:

.torpedo/entities/user.yaml

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: "user"
    plural: "users" 
    description: "The frequent flyer user"
    doc: |
        The user entity represents a system user but also a frequent flyer. 
        This entity is only for the example purpose.
    schema:
        reserved:
            id:
                type: ulid 

        fields:
          - name: name
            type: string
            description: "The user full name"

          - name: email
            type: string
            description: "The user contact email"

          - name: password # it is not recommended to save passwords, this is an example only
            type: string
            encrypted: true
            description: "The user system password"

          - name: plan
            type: string
            description: "The user membership plan"
            validate:
              list:
                values:
                  - GOLD
                  - SILVER
                  - BRONZE

          - name: miles
            type: integer
            description: "The accumulated flyer miles"

    relationships:
        - name: trips
          type: $rel
          ref: ".torpedo/entities/trip.yaml"
          cardinality: hasMany
          load:
            type: nested
            metadata:
                maxItems: 100

    adapters:
        input:
            - type: http

        output:
          - type: memory 

此外,Trip 实体是必需的,因此,让我们创建一个 Trip 实体:

.torpedo/entities/trip.yaml

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: trip
    plural: trips
    description: "The user fly trip reservations"
    doc: |
        The trip entity handles all data related with the frequent flyer trip
    schema:
        reserved:
            id:
                type: ulid

        fields:
          - name: departure
            type: string
            description: "The trip departure airport"

          - name: arrival
            type: string
            description: "The trip arrival airport"

          - name: miles
            type: integer
            description: "The trip miles"

          - name: from
            type: date
            description: "The trip from date"

          - name: to
            type: date
            description: "The trip to date"

    adapters:
        input:
            - type: http

        output:
            - type: memory

Torpedo 将为 User 和 Trip 实体生成 Go 代码及其相应的 CRUD 操作,包括存储库接口和任何必要的数据库处理代码。

4. 创建用例

实体就位后,就可以使用用例定义它们如何与应用程序的工作流程交互。用例封装了作用于您的实体的业务规则和流程。

在 .torpedo/use_cases 目录下创建一个 YAML 文件来定义您的用例。以下是预订机票的简单用例示例:

.torpedo/use_cases/booking_fly.yaml

mkdir booking-fly && cd booking-fly

此定义告诉 Torpedo 创建框架代码来放置自定义逻辑,用于处理给定行程和用户的飞行预订。

Torpedo 将构建完整的用例,包括与您的实体的交互。

完成下一步 (#5) 后,请阅读快速入门指南,了解如何在用例中生成的框架用例中编写逻辑

5. 将它们连接在一起

定义实体和用例后,Torpedo 确保这些组件之间的连接遵循六边形架构原则。用例将通过服务接口与实体交互,而您的适配器(例如数据库或 API)则处理持久性和外部通信。

现在是时候编写您的应用程序规范以将所有内容放在一起了!应用程序定义是最重要的文件,因为这里描述了您的应用程序。以下示例展示了如何定义 Booking Fly 应用程序:

.torpedo/app.yaml

torpedo init

要生成应用程序代码(实体、用例等),请运行命令:

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: "user"
    plural: "users" 
    description: "The frequent flyer user"
    doc: |
        The user entity represents a system user but also a frequent flyer. 
        This entity is only for the example purpose.
    schema:
        reserved:
            id:
                type: ulid 

        fields:
          - name: name
            type: string
            description: "The user full name"

          - name: email
            type: string
            description: "The user contact email"

          - name: password # it is not recommended to save passwords, this is an example only
            type: string
            encrypted: true
            description: "The user system password"

          - name: plan
            type: string
            description: "The user membership plan"
            validate:
              list:
                values:
                  - GOLD
                  - SILVER
                  - BRONZE

          - name: miles
            type: integer
            description: "The accumulated flyer miles"

    relationships:
        - name: trips
          type: $rel
          ref: ".torpedo/entities/trip.yaml"
          cardinality: hasMany
          load:
            type: nested
            metadata:
                maxItems: 100

    adapters:
        input:
            - type: http

        output:
          - type: memory 

该命令将生成一个项目脚手架,设置基于六边形架构的目录结构。该项目将包括实体用例适配器的核心文件夹。它确保您的业务逻辑和基础设施从一开始就保持解耦。

您现在可以通过添加更多实体、用例甚至自定义适配器来扩展您的项目。 Torpedo 的结构使您可以保持代码整洁和模块化,从而可以随着应用程序的增长轻松扩展应用程序。

另请参阅如何使用生成的用例代码编写自己的逻辑。

6. 运行您的应用程序

设置实体和用例后,您就可以运行应用程序了。 Torpedo 包括一个基于 Gin Gonic 项目的轻量级服务器,您可以运行它来进行测试和开发。只需使用:

不要忘记在更新依赖项之前运行 go mod tidy!

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: trip
    plural: trips
    description: "The user fly trip reservations"
    doc: |
        The trip entity handles all data related with the frequent flyer trip
    schema:
        reserved:
            id:
                type: ulid

        fields:
          - name: departure
            type: string
            description: "The trip departure airport"

          - name: arrival
            type: string
            description: "The trip arrival airport"

          - name: miles
            type: integer
            description: "The trip miles"

          - name: from
            type: date
            description: "The trip from date"

          - name: to
            type: date
            description: "The trip to date"

    adapters:
        input:
            - type: http

        output:
            - type: memory

您现在可以与应用程序的 API 交互,运行您定义的 CRUD 操作和用例。

7. 下一步是什么?

Torpedo 使用六边形架构可以轻松生成干净、结构化的 Go 代码。但这仅仅是开始!您可以通过添加更复杂的工作流程、集成外部服务以及自定义框架来继续探索 Torpedo 的功能以满足您的需求。

请继续关注 Torpedo 即将推出的更多高级功能,并在探索可能性时随时分享您的反馈!


结论

使用 Torpedo 创建您的第一个项目既简单又快速。通过利用 YAML 中实体模式和用例定义的强大功能,您可以快速构建健壮的 Golang 应用程序,同时保持简洁的架构原则。现在是时候投入并开始构建了!让我们知道您的想法以及 Torpedo 如何帮助您未来的项目。

以上是使用 Torpedo 创建您的第一个项目:分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在Golang和Python之间进行选择:适合您的项目在Golang和Python之间进行选择:适合您的项目Apr 19, 2025 am 12:21 AM

golangisidealforperformance-Critical-clitageAppations and ConcurrentPrompromming,而毛皮刺激性,快速播种和可及性。1)forhigh-porformanceneeds,pelectgolangduetoitsefefsefefseffifeficefsefeflicefsiveficefsiveandconcurrencyfeatures.2)fordataa-fordataa-fordata-fordata-driventriventriventriventriventrivendissp pynonnononesp

Golang:并发和行动绩效Golang:并发和行动绩效Apr 19, 2025 am 12:20 AM

Golang通过goroutine和channel实现高效并发:1.goroutine是轻量级线程,使用go关键字启动;2.channel用于goroutine间安全通信,避免竞态条件;3.使用示例展示了基本和高级用法;4.常见错误包括死锁和数据竞争,可用gorun-race检测;5.性能优化建议减少channel使用,合理设置goroutine数量,使用sync.Pool管理内存。

Golang vs. Python:您应该学到哪种语言?Golang vs. Python:您应该学到哪种语言?Apr 19, 2025 am 12:20 AM

Golang更适合系统编程和高并发应用,Python更适合数据科学和快速开发。1)Golang由Google开发,静态类型,强调简洁性和高效性,适合高并发场景。2)Python由GuidovanRossum创造,动态类型,语法简洁,应用广泛,适合初学者和数据处理。

Golang vs. Python:性能和可伸缩性Golang vs. Python:性能和可伸缩性Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Golang vs.其他语言:比较Golang vs.其他语言:比较Apr 19, 2025 am 12:11 AM

Go语言在并发编程、性能、学习曲线等方面有独特优势:1.并发编程通过goroutine和channel实现,轻量高效。2.编译速度快,运行性能接近C语言。3.语法简洁,学习曲线平缓,生态系统丰富。

Golang和Python:了解差异Golang和Python:了解差异Apr 18, 2025 am 12:21 AM

Golang和Python的主要区别在于并发模型、类型系统、性能和执行速度。1.Golang使用CSP模型,适用于高并发任务;Python依赖多线程和GIL,适合I/O密集型任务。2.Golang是静态类型,Python是动态类型。3.Golang编译型语言执行速度快,Python解释型语言开发速度快。

Golang vs.C:评估速度差Golang vs.C:评估速度差Apr 18, 2025 am 12:20 AM

Golang通常比C 慢,但Golang在并发编程和开发效率上更具优势:1)Golang的垃圾回收和并发模型使其在高并发场景下表现出色;2)C 通过手动内存管理和硬件优化获得更高性能,但开发复杂度较高。

Golang:云计算和DevOps的关键语言Golang:云计算和DevOps的关键语言Apr 18, 2025 am 12:18 AM

Golang在云计算和DevOps中的应用广泛,其优势在于简单性、高效性和并发编程能力。1)在云计算中,Golang通过goroutine和channel机制高效处理并发请求。2)在DevOps中,Golang的快速编译和跨平台特性使其成为自动化工具的首选。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能