Erstellen Sie Ihr erstes Projekt mit Torpedo: Eine Schritt-für-Schritt-Anleitung

Patricia Arquette
Freigeben: 2024-11-18 09:06:02
Original
649 Leute haben es durchsucht

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

Beim Erstellen von Anwendungen in Golang kann die Einhaltung der Prinzipien der hexagonalen Architektur sauberen, modularen und wartbaren Code gewährleisten. Mit Torpedo können Sie diese Architektur einfach implementieren und gleichzeitig Ihren Entwicklungsprozess beschleunigen. In diesem Leitfaden zeigen wir Ihnen, wie Sie Ihr erstes Projekt mit Torpedo erstellen, von der Installation bis zur Generierung von Entitäten und Anwendungsfällen.

Dieser Beitrag ist eine Zusammenfassung der dokumentierten Kurzanleitung

1. Erste Schritte mit Torpedo

Bevor wir mit der Erstellung eines Projekts beginnen, stellen Sie sicher, dass Go auf Ihrem System installiert ist. Installieren Sie dann Torpedo gemäß den Anweisungen in der Installationsanleitung

Dieses CLI-Tool übernimmt für Sie die Projektgenerierung, Entitätserstellung und Anwendungsfallgerüstbildung. Nach der Installation können Sie Ihr erstes Projekt erstellen.

2. Einrichten Ihres ersten Projekts

Lasst uns mit unserer ersten Anwendung beginnen, die mit Torpedo! erstellt wurde. Wir werden eine Flugreservierungs-App namens Booking Fly entwickeln.

Wenn Torpedo installiert ist, ist das Erstellen eines neuen Projekts so einfach wie das Ausführen von:

mkdir booking-fly && cd booking-fly
Nach dem Login kopieren
Nach dem Login kopieren
torpedo init
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl generiert den Ordner .torpedo, in dem Sie Ihre Entitäten und Anwendungsfälle definieren sollten. Weitere Informationen zu diesem Ordner finden Sie unter .torpedo dir struct

3. Definieren Ihrer ersten Entität

Als nächstes möchten Sie Ihre Domain-Entitäten definieren. Entitäten sind die Kernobjekte in der Geschäftslogik Ihrer Anwendung und repräsentieren Dinge wie Benutzer, Produkt oder Bestellung.

Um Ihre erste Entität zu definieren, erstellen Sie eine YAML-Datei im Verzeichnis .torpedo/entities. Erstellen wir zum Beispiel eine einfache Benutzerentität:

.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 

Nach dem Login kopieren
Nach dem Login kopieren

Zusätzlich ist die Entität „Reise“ erforderlich, also erstellen wir eine Entität „Reise“:

.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

Nach dem Login kopieren
Nach dem Login kopieren

Torpedo generiert den Go-Code für die Benutzer- und Trip-Entitäten zusammen mit den entsprechenden CRUD-Vorgängen, einschließlich der Repository-Schnittstellen und aller erforderlichen Datenbankverarbeitungscodes.

4. Anwendungsfälle erstellen

Sobald Ihre Entitäten vorhanden sind, ist es an der Zeit, mithilfe von Anwendungsfällen zu definieren, wie sie mit den Arbeitsabläufen der Anwendung interagieren. Anwendungsfälle kapseln die Geschäftsregeln und -prozesse, die auf Ihre Einheiten einwirken.

Erstellen Sie eine YAML-Datei im Verzeichnis .torpedo/use_cases, um Ihren Anwendungsfall zu definieren. Hier ist ein Beispiel für einen einfachen Anwendungsfall für die Flugbuchung:

.torpedo/use_cases/booking_fly.yaml

mkdir booking-fly && cd booking-fly
Nach dem Login kopieren
Nach dem Login kopieren

Diese Definition weist Torpedo an, den Grundcode zu erstellen, um Ihre benutzerdefinierte Logik für die Verarbeitung einer Flugreservierung unter Berücksichtigung einer Reise und eines Benutzers bereitzustellen.

Torpedo übernimmt das Gerüst für den gesamten Anwendungsfall, einschließlich der Interaktionen mit Ihren Entitäten.

Nachdem Sie den nächsten Schritt (#5) abgeschlossen haben, lesen Sie bitte die Kurzanleitung, um zu erfahren, wie Sie Ihre Logik innerhalb des generierten Skelett-Anwendungsfalls unter Anwendungsfälle programmieren können

5. Alles miteinander verkabeln

Sobald Sie Ihre Entitäten und Anwendungsfälle definiert haben, stellt Torpedo sicher, dass die Verkabelung zwischen diesen Komponenten den Prinzipien der Hexagonal Architecture folgt. Die Anwendungsfälle interagieren mit den Entitäten über die Serviceschnittstellen, während Ihre Adapter (z. B. Datenbanken oder APIs) die Persistenz und externe Kommunikation übernehmen.

Jetzt ist es an der Zeit, Ihre App-Spezifikation zu schreiben, um alles zusammenzustellen!. Die Anwendungsdefinition ist die wichtigste Datei, da hier Ihre App beschrieben wird. Das folgende Beispiel zeigt, wie die Booking Fly-App definiert wird:

.torpedo/app.yaml

torpedo init
Nach dem Login kopieren
Nach dem Login kopieren

Um den Anwendungscode (Entitäten, Anwendungsfälle und mehr) zu generieren, führen Sie den Befehl aus:

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 

Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl generiert ein Projektgerüst und richtet die Verzeichnisstruktur basierend auf der hexagonalen Architektur ein. Das Projekt umfasst Kernordner für Entitäten, Anwendungsfälle und Adapter. Es stellt sicher, dass Ihre Geschäftslogik und Infrastruktur von Anfang an entkoppelt bleiben.

Sie können Ihr Projekt jetzt erweitern, indem Sie weitere Entitäten, Anwendungsfälle und sogar benutzerdefinierte Adapter hinzufügen. Die Struktur von Torpedo ermöglicht es Ihnen, Ihren Code sauber und modular zu halten, sodass Sie Ihre Anwendung problemlos skalieren können, wenn sie wächst.

Sehen Sie sich auch an, wie Sie Ihre eigene Logik mit dem generierten Use-Case-Code programmieren können.

6. Ausführen Ihrer Anwendung

Nachdem Sie Entitäten und Anwendungsfälle eingerichtet haben, können Sie Ihre Anwendung ausführen. Torpedo umfasst einen leichtgewichtigen Server, der auf dem Gin Gonic-Projekt basiert und den Sie zu Test- und Entwicklungszwecken ausführen können. Benutzen Sie einfach:

Vergessen Sie nicht, vorher Go Mod Tidy auszuführen, um Abhängigkeiten zu aktualisieren!

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

Nach dem Login kopieren
Nach dem Login kopieren

Sie können jetzt mit der API Ihrer Anwendung interagieren und die von Ihnen definierten CRUD-Vorgänge und Anwendungsfälle ausführen.

7. Was kommt als nächstes?

Torpedo macht es einfach, sauberen, strukturierten Go-Code mit Hexagonal Architecture zu generieren. Aber das ist erst der Anfang! Sie können die Funktionen von Torpedo weiter erkunden, indem Sie komplexere Workflows hinzufügen, externe Dienste integrieren und das Framework an Ihre Bedürfnisse anpassen.

Bleiben Sie gespannt auf weitere erweiterte Funktionen, die bald für Torpedo verfügbar sein werden, und teilen Sie uns gerne Ihr Feedback mit, während Sie erkunden, was möglich ist!


Abschluss

Das Erstellen Ihres ersten Projekts mit Torpedo ist einfach und schnell. Durch die Nutzung der Leistungsfähigkeit von Entitätsschemata und Anwendungsfalldefinitionen in YAML können Sie schnell ein Gerüst für eine robuste Golang-Anwendung erstellen und gleichzeitig klare Architekturprinzipien beibehalten. Jetzt ist es an der Zeit einzutauchen und mit dem Bau zu beginnen! Teilen Sie uns Ihre Meinung mit und wie Torpedo Ihre zukünftigen Projekte unterstützen kann.

Das obige ist der detaillierte Inhalt vonErstellen Sie Ihr erstes Projekt mit Torpedo: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage