Elegante Implementierung der Golang REST API-Architektur
Es gibt ein Sprichwort, dass die in Golang geschriebene API nicht so einfach und universell sein kann wie andere Sprachen. Aber in Wirklichkeit bin ich auf viel REST-API-Code mit vielen Abstraktionen gestoßen, was die Codebasis verwirrend und komplex machte und letztendlich die Lesbarkeit und Wartbarkeit beeinträchtigte.
In dieser Serie erfahren Sie, wie Sie eine REST-API-TODO-Liste auf Produktebene erstellen, eine nachhaltige Erweiterungsarchitektur, beginnend mit Routing- und Codeschnittstellen, dann das Hinzufügen einer Mongo-Datenbank und einer Badger-Datenschicht dann Ist die Autorisierungsprotokollschicht (OAuth 2.0)
In dieser Serie verwenden wir Chi-Routing.
Warum Chi anstelle der Standardbibliothek oder Gin oder Router-x für das Routing verwenden?
Nun, eigentlich spielt es keine Rolle, wofür Sie sich entscheiden. Unabhängig davon, was Sie für das Routing verwenden, werden die in dieser Serie besprochenen Konzepte nützlich sein. Aber es gibt die folgenden Vorteile, die mich glauben lassen, dass Chi-Router den meisten Alternativen überlegen ist:
und
net/http
100 % kompatibel mit der Standardbibliothek --- verfügbar im Go-Ökosystem Verwenden Sie jedes Net/http-kompatible http- oder Middleware-Paket 🎜>- Keine externen Abhängigkeiten --- Purely Go 1.7+ stdlib + net / http
- Leistungsstark - -- Viele Unternehmen nutzen es, zum Beispiel: Pressly, CloudFlare, Heroku, 99Designs
- Lightweight --- getaktet in ~1000 LOC für den Chi-Router
- Es ist schnell
- Was mir am besten gefällt, ist, dass alte http-Handler und Middleware, die Sie für andere Net/http-kompatible Router geschrieben haben, immer noch einwandfrei funktionieren. Lass uns anfangen
Der obige Code steht im Mittelpunkt einiger Best Practices
Verwenden Sie ein separates Paket Implementieren Sie die Routing-Logik, gruppieren Sie sie und mounten Sie sie dann:
- Überprüfen Sie die API So können Sie die API aktualisieren, ohne alte Clients zu beschädigen:
- Verwenden Sie Middleware als Erweiterung. Code, der viel Routing verwendet, ist tatsächlich sehr umständlich und kann in Link-Middleware umgewandelt werden, z. B. Autorisierung, Festlegen von Antwortheadern, Komprimierung, Anforderungsprotokolle, Ratenbegrenzung usw.
- Chi-Routing hat eine Methode namens Gehen. Von dieser Methode empfangene Parameter:
- Ein Rückruf.
- Jeder Rückruf Alle Definierte Routen werden zurückgerufen und erhalten 4 Parameter:
- String der tatsächlichen Route
- Prozessor (Funktion), verarbeitet Anfragen für eine bestimmte Route
- Liste der in einer bestimmten Route definierten Middleware (Middleware ist eine relativ einfache Funktion, die zuvor aufgerufen wird Der Handler wird aufgerufen, sodass sie vor der Anforderungsverarbeitung, Autorisierung usw. verwendet werden.)
- In meinem Fall frage ich einfach Routen ab und drucke alle definierten Routen aus. Dadurch erhalte ich einen Überblick über alle verfügbaren Routen. Als nächstes erstellen wir ein Todo-Paket, das tatsächlich unsere Todo-Logik speichert.
Notizen
routes.go,
damit sie im Paket leicht zu finden ist- .
Der Handler hat die Funktionssignatur , was bedeutet, dass sich der Handler nicht von der Art und Weise unterscheidet, wie Sie net/http mit der Standardbibliothek schreiben.
Verwenden Sie render.JSON, einen Encoding/JSON-Wrapper, der automatisch den gesamten HTML-Code in Ihrer JSON-Antwort maskiert und den Inhaltstyp auf application/json setzt
func (w http.ResponseWriter,r *http.Request)
- Haben Sie Angst davor, wie einfach es ist? Sie können dieses Projekt auf GitHub ansehen https://github.com/tonyalaribe/todoapi/tre....
In unserem nächsten Artikel dieser Reihe werden wir weiterhin die Konfiguration und den gemeinsamen Status unterstützen. Die meisten Projekte erfordern normalerweise zusätzliche Konfigurationen, z. B. Datenbankverbindungen usw. Wir werden dies im nächsten Artikel besprechen.
Empfohlenes Tutorial: „Go Tutorial“
Das obige ist der detaillierte Inhalt vonElegante Implementierung der Golang REST API-Architektur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Wie konfiguriere ich Verbindungspooling für Go-Datenbankverbindungen? Verwenden Sie den DB-Typ im Datenbank-/SQL-Paket, um eine Datenbankverbindung zu erstellen. Legen Sie MaxOpenConns fest, um die maximale Anzahl gleichzeitiger Verbindungen festzulegen. Legen Sie ConnMaxLifetime fest, um den maximalen Lebenszyklus der Verbindung festzulegen.

Der Unterschied zwischen dem GoLang-Framework und dem Go-Framework spiegelt sich in der internen Architektur und den externen Funktionen wider. Das GoLang-Framework basiert auf der Go-Standardbibliothek und erweitert deren Funktionalität, während das Go-Framework aus unabhängigen Bibliotheken besteht, um bestimmte Zwecke zu erreichen. Das GoLang-Framework ist flexibler und das Go-Framework ist einfacher zu verwenden. Das GoLang-Framework hat einen leichten Leistungsvorteil und das Go-Framework ist skalierbarer. Fall: Gin-Gonic (Go-Framework) wird zum Erstellen der REST-API verwendet, während Echo (GoLang-Framework) zum Erstellen von Webanwendungen verwendet wird.

JSON-Daten können mithilfe der gjson-Bibliothek oder der json.Unmarshal-Funktion in einer MySQL-Datenbank gespeichert werden. Die gjson-Bibliothek bietet praktische Methoden zum Parsen von JSON-Feldern, und die Funktion json.Unmarshal erfordert einen Zieltypzeiger zum Unmarshalieren von JSON-Daten. Bei beiden Methoden müssen SQL-Anweisungen vorbereitet und Einfügevorgänge ausgeführt werden, um die Daten in der Datenbank beizubehalten.

Die FindStringSubmatch-Funktion findet die erste Teilzeichenfolge, die mit einem regulären Ausdruck übereinstimmt: Die Funktion gibt ein Segment zurück, das die passende Teilzeichenfolge enthält, wobei das erste Element die gesamte übereinstimmende Zeichenfolge und die nachfolgenden Elemente einzelne Teilzeichenfolgen sind. Codebeispiel: regexp.FindStringSubmatch(text,pattern) gibt einen Ausschnitt übereinstimmender Teilzeichenfolgen zurück. Praktischer Fall: Es kann verwendet werden, um den Domänennamen in der E-Mail-Adresse abzugleichen, zum Beispiel: email:="user@example.com", pattern:=@([^\s]+)$, um die Übereinstimmung des Domänennamens zu erhalten [1].

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

Die Verwendung vordefinierter Zeitzonen in Go umfasst die folgenden Schritte: Importieren Sie das Paket „time“. Laden Sie eine bestimmte Zeitzone über die LoadLocation-Funktion. Verwenden Sie die geladene Zeitzone für Vorgänge wie das Erstellen von Zeitobjekten, das Analysieren von Zeitzeichenfolgen und das Durchführen von Datums- und Uhrzeitkonvertierungen. Vergleichen Sie Daten mit unterschiedlichen Zeitzonen, um die Anwendung der vordefinierten Zeitzonenfunktion zu veranschaulichen.

Häufig gestellte Fragen zur Go-Framework-Entwicklung: Framework-Auswahl: Hängt von den Anwendungsanforderungen und Entwicklerpräferenzen ab, z. B. Gin (API), Echo (erweiterbar), Beego (ORM), Iris (Leistung). Installation und Verwendung: Verwenden Sie den Befehl gomod, um das Framework zu installieren, zu importieren und zu verwenden. Datenbankinteraktion: Verwenden Sie ORM-Bibliotheken wie gorm, um Datenbankverbindungen und -operationen herzustellen. Authentifizierung und Autorisierung: Verwenden Sie Sitzungsverwaltungs- und Authentifizierungs-Middleware wie gin-contrib/sessions. Praktischer Fall: Verwenden Sie das Gin-Framework, um eine einfache Blog-API zu erstellen, die POST, GET und andere Funktionen bereitstellt.
