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

使用 Torpedo 创建您的第一个项目:分步指南

Nov 18, 2024 am 09:06 AM

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Debian OpenSSL有哪些漏洞 Debian OpenSSL有哪些漏洞 Apr 02, 2025 am 07:30 AM

OpenSSL,作为广泛应用于安全通信的开源库,提供了加密算法、密钥和证书管理等功能。然而,其历史版本中存在一些已知安全漏洞,其中一些危害极大。本文将重点介绍Debian系统中OpenSSL的常见漏洞及应对措施。DebianOpenSSL已知漏洞:OpenSSL曾出现过多个严重漏洞,例如:心脏出血漏洞(CVE-2014-0160):该漏洞影响OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻击者可利用此漏洞未经授权读取服务器上的敏感信息,包括加密密钥等。

从前端转型后端开发,学习Java还是Golang更有前景? 从前端转型后端开发,学习Java还是Golang更有前景? Apr 02, 2025 am 09:12 AM

后端学习路径:从前端转型到后端的探索之旅作为一名从前端开发转型的后端初学者,你已经有了nodejs的基础,...

Beego ORM中如何指定模型关联的数据库? Beego ORM中如何指定模型关联的数据库? Apr 02, 2025 pm 03:54 PM

在BeegoORM框架下,如何指定模型关联的数据库?许多Beego项目需要同时操作多个数据库。当使用Beego...

GoLand中自定义结构体标签不显示怎么办? GoLand中自定义结构体标签不显示怎么办? Apr 02, 2025 pm 05:09 PM

GoLand中自定义结构体标签不显示怎么办?在使用GoLand进行Go语言开发时,很多开发者会遇到自定义结构体标签在�...

Go语言中用于浮点数运算的库有哪些? Go语言中用于浮点数运算的库有哪些? Apr 02, 2025 pm 02:06 PM

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

Go的爬虫Colly中Queue线程的问题是什么? Go的爬虫Colly中Queue线程的问题是什么? Apr 02, 2025 pm 02:09 PM

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

在Go语言中使用Redis Stream实现消息队列时,如何解决user_id类型转换问题? 在Go语言中使用Redis Stream实现消息队列时,如何解决user_id类型转换问题? Apr 02, 2025 pm 04:54 PM

Go语言中使用RedisStream实现消息队列时类型转换问题在使用Go语言与Redis...

如何在Debian上配置MongoDB自动扩容 如何在Debian上配置MongoDB自动扩容 Apr 02, 2025 am 07:36 AM

本文介绍如何在Debian系统上配置MongoDB实现自动扩容,主要步骤包括MongoDB副本集的设置和磁盘空间监控。一、MongoDB安装首先,确保已在Debian系统上安装MongoDB。使用以下命令安装:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集确保高可用性和数据冗余,是实现自动扩容的基础。启动MongoDB服务:sudosystemctlstartmongodsudosys

See all articles