suchen
URL-Shortener in GoNov 30, 2024 am 08:51 AM

Erstellen von URL-Shortenern in Go: Eine Geschichte zweier Frameworks

URL-Shortener sind ein klassisches Beispiel dafür, wie einfache Tools große Wirkung erzielen können. Unabhängig davon, ob Sie Links in sozialen Medien teilen oder in einer Textnachricht versenden, sind kürzere URLs einfacher zu verwalten und sehen sauber aus.

In diesem Blog-Beitrag führe ich Sie durch diese beiden URL-Shortener-Projekte, die leichtgewichtig und sehr schnell zu erstellen sind. Beide sind integrierte Go-Projekte: eines verwendet das Gin-Framework und das andere mit Gorilla Mux.

Jedes bringt einen einzigartigen Ansatz mit, und ich werde ihre Merkmale und Unterschiede hervorheben.

~ Quellcode: Hier zu finden


URL-Shortener mit GUI: Funktionsreich und intuitiv

Beginnen wir mit dem ersten Projekt – einem URL-Shortener, der über eine einfache API hinausgeht. Es umfasst sowohl ein REST-API-Backend als auch eine Desktop-GUI-Anwendung, wodurch es sowohl für Entwickler als auch für technisch nicht versierte Benutzer zugänglich ist. Dieses Projekt verwendet das Gin-Framework für sein Backend und Fyne für die GUI.

Hauptmerkmale

  1. REST-API-Backend

    Das Gin-Framework bietet eine schnelle und zuverlässige API zum Kürzen und Umleiten von URLs. Es ist leicht und dennoch robust, perfekt für diesen Anwendungsfall.

  2. Desktop-GUI

    Die mit dem Fyne-Framework erstellte GUI ist übersichtlich, minimalistisch und einfach zu bedienen. Es ermöglicht Benutzern, URLs zu kürzen, ohne ein Terminal berühren zu müssen.

  3. Sichere und zufällige Schlüssel

    Die kurzen URLs werden mithilfe sicherer Zufallswerte generiert, um Einzigartigkeit zu gewährleisten und die Wahrscheinlichkeit von Kollisionen zu verringern.

  4. Dualer Zugriff

    Egal, ob Sie mit REST-APIs vertraut sind oder eine GUI bevorzugen, dieses Projekt ist genau das Richtige für Sie.

Erste Schritte

Um zu beginnen, klonen Sie das Repository und installieren Sie die erforderlichen externen Go-Pakete:

git clone https://github.com/SirTingling/cloudprojects.git
cd url-shortener
go get -u github.com/gin-gonic/gin
go get -u fyne.io/fyne/v2

Ausführen der App

  • Backend-Server

Führen Sie den Backend-Server aus mit:

go run server.go

Der Server startet unter http://localhost:8080.

  • Desktop-GUI

Starten Sie die GUI-Anwendung mit:

go run gui.go

Dies öffnet ein einfaches Fenster, in dem Sie lange URLs eingeben und im Gegenzug verkürzte Links erhalten können.

Wie funktioniert es?

  • API-Endpunkte:

POST /kürzen: Akzeptiert eine lange URL und gibt eine kurze URL zurück.
GET /:short: Leitet die Kurz-URL zur Original-URL um.

  • GUI-Workflow:
  1. Geben Sie die lange URL ein.
  2. Klicken Sie auf „URL kürzen“.
  3. Kopieren Sie den gekürzten Link und teilen Sie ihn.

Die Integration einer GUI macht es vielseitiger als eine typische reine Backend-Anwendung.


URL Shortener V2: Leicht und unkompliziert

Beim zweiten Projekt dreht sich alles um Einfachheit. Es wurde mit Gorilla Mux entwickelt und konzentriert sich auf die Bereitstellung eines einfachen, aber funktionalen URL-Shorteners. Wenn Sie nach einer leichten Lösung suchen, die Ihre Arbeit erledigt, ist dies die richtige Lösung, meine Freunde.

Hauptmerkmale

  1. Gorilla Mux für Routing

Gorilla Mux ist ein leistungsstarker Router für Go und wird hier zur Verwaltung aller HTTP-Endpunkte verwendet.

  1. MD5-basierte Schlüsselgenerierung

Verkürzte URLs werden mithilfe eines MD5-Hashs der Original-URL erstellt. Ja, ich stimme zu, dass es nicht so sicher ist wie die Zufallsgenerierung, dennoch ist es effizient und gewährleistet deterministische Ergebnisse.

  1. In-Memory-Speicher

Der Shortener verwendet eine einfache In-Memory-Map zum Speichern von URLs. Dies macht es schnell, ist jedoch nicht ideal für Anwendungen im Produktionsmaßstab.

  1. Minimale Abhängigkeiten

Da Gorilla Mux nur eine externe Abhängigkeit darstellt, ist dieses Projekt einfach einzurichten und bereitzustellen.

Lass uns gehen!

git clone https://github.com/SirTingling/cloudprojects.git
cd url-shortener
go get -u github.com/gin-gonic/gin
go get -u fyne.io/fyne/v2

Ausführen der App

  • Starten Sie den Server mit:
go run server.go

Der Server läuft unter http://localhost:8080.

Wie es funktioniert

  • Kurz-URL erstellen:
  1. Senden Sie eine POST-Anfrage an /create mit dem URL-Parameter:
go run gui.go
  1. Antwort:
git clone <repository-url>
cd url-shortener
go get -u github.com/gorilla/mux
</repository-url>
  1. Weiterleitung: Greifen Sie auf die verkürzte URL zu
go run main.go

Dadurch wird zur ursprünglichen URL weitergeleitet.

Ehrlich gesagt ist es schnell zu implementieren und funktioniert gut als Lernprojekt oder für kleine Anwendungsfälle. Mir gefiel es als schnelles Miniprojekt.


Vergleich der beiden Ansätze

Hier ist eine kurze Aufschlüsselung der Unterschiede:

Funktion URL-Shortener mit GUI (Gin) URL Shortener V2 (Mux)
Feature URL Shortener with GUI (Gin) URL Shortener V2 (Mux)
Framework Gin Gorilla Mux
Frontend Desktop GUI (Fyne) None
URL Key Generation Secure Random Values MD5 Hash
Storage Not Specified In-Memory
Complexity Moderate Simple
Rahmen Gin Gorilla Mux Frontend Desktop-GUI (Fyne) Keine URL-Schlüsselgenerierung Sichere Zufallswerte MD5-Hash Speicher Nicht angegeben In-Memory Komplexität Mäßig Einfach

Die Arbeit mit beiden Ansätzen war meiner persönlichen Meinung nach unkompliziert und ich hoffe, dass ihr beide ausprobiert, da sie beide in vielen verschiedenen Szenarien außerhalb der URL-Verkürzung verwendet werden können.

Die Gin-basierte Lösung ist ideal für diejenigen, die ein All-in-One-Tool mit Benutzeroberfläche wünschen, während die Mux-basierte Version perfekt für einfache, reine API-Anwendungsfälle ist.


Vielen Dank, dass Sie wieder bei meinem Miniprojekt-Abenteuer mit Go (und vielen weiteren Sprachen und Tools) dabei waren. Ich erwische euch im nächsten! Prost!! ?

URL Shortener in Go

Das obige ist der detaillierte Inhalt vonURL-Shortener in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Was sind die Schwachstellen von Debian OpenenslWas sind die Schwachstellen von Debian OpenenslApr 02, 2025 am 07:30 AM

OpenSSL bietet als Open -Source -Bibliothek, die in der sicheren Kommunikation weit verbreitet sind, Verschlüsselungsalgorithmen, Tasten und Zertifikatverwaltungsfunktionen. In seiner historischen Version sind jedoch einige Sicherheitslücken bekannt, von denen einige äußerst schädlich sind. Dieser Artikel konzentriert sich auf gemeinsame Schwachstellen und Antwortmaßnahmen für OpenSSL in Debian -Systemen. DebianopensL Bekannte Schwachstellen: OpenSSL hat mehrere schwerwiegende Schwachstellen erlebt, wie z. Ein Angreifer kann diese Sicherheitsanfälligkeit für nicht autorisierte Lesen sensibler Informationen auf dem Server verwenden, einschließlich Verschlüsselungsschlüssel usw.

Wie verwenden Sie das PPROF -Tool, um die Go -Leistung zu analysieren?Wie verwenden Sie das PPROF -Tool, um die Go -Leistung zu analysieren?Mar 21, 2025 pm 06:37 PM

In dem Artikel wird erläutert, wie das PPROF -Tool zur Analyse der GO -Leistung verwendet wird, einschließlich der Aktivierung des Profils, des Sammelns von Daten und der Identifizierung gängiger Engpässe wie CPU- und Speicherprobleme.Character Count: 159

Wie schreibt man Unit -Tests in Go?Wie schreibt man Unit -Tests in Go?Mar 21, 2025 pm 06:34 PM

In dem Artikel werden Schreiben von Unit -Tests in GO erörtert, die Best Practices, Spottechniken und Tools für ein effizientes Testmanagement abdecken.

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?Mar 10, 2025 pm 05:38 PM

Dieser Artikel zeigt, dass Mocks und Stubs in GO für Unit -Tests erstellen. Es betont die Verwendung von Schnittstellen, liefert Beispiele für Mock -Implementierungen und diskutiert Best Practices wie die Fokussierung von Mocks und die Verwendung von Assertion -Bibliotheken. Die Articl

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?Mar 10, 2025 pm 03:20 PM

In diesem Artikel werden die benutzerdefinierten Typ -Einschränkungen von GO für Generika untersucht. Es wird beschrieben, wie Schnittstellen die minimalen Typanforderungen für generische Funktionen definieren und die Sicherheitstypsicherheit und die Wiederverwendbarkeit von Code verbessern. Der Artikel erörtert auch Einschränkungen und Best Practices

Erläutern Sie den Zweck von Go's Reflect Package. Wann würden Sie Reflexion verwenden? Was sind die Leistungsauswirkungen?Erläutern Sie den Zweck von Go's Reflect Package. Wann würden Sie Reflexion verwenden? Was sind die Leistungsauswirkungen?Mar 25, 2025 am 11:17 AM

In dem Artikel wird das Reflect -Paket von Go, das zur Laufzeitmanipulation von Code verwendet wird, von Vorteil für die Serialisierung, generische Programmierung und vieles mehr. Es warnt vor Leistungskosten wie langsamere Ausführung und höherer Speichergebrauch, beraten die vernünftige Verwendung und am besten am besten

Wie verwenden Sie tabelgesteuerte Tests in Go?Wie verwenden Sie tabelgesteuerte Tests in Go?Mar 21, 2025 pm 06:35 PM

In dem Artikel werden mit Tabellensteuerungstests in GO eine Methode mit einer Tabelle mit Testfällen getestet, um Funktionen mit mehreren Eingaben und Ergebnissen zu testen. Es zeigt Vorteile wie eine verbesserte Lesbarkeit, verringerte Vervielfältigung, Skalierbarkeit, Konsistenz und a

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?Mar 10, 2025 pm 05:36 PM

In diesem Artikel wird die Verwendung von Tracing -Tools zur Analyse von GO -Anwendungsausführungsfluss untersucht. Es werden manuelle und automatische Instrumentierungstechniken, den Vergleich von Tools wie Jaeger, Zipkin und Opentelemetrie erörtert und die effektive Datenvisualisierung hervorheben

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),