Ralf Wirdemann kommmitment GmbH & Co. KG

Go besticht durch Einfachheit. Sowohl Sprache als auch Tools sind einfach erlern- und benutzbar. Standards und Konventionen erzwingen gut lesbaren Code, was die Sprache zu einer produktiven Sprache für Teams macht.

Alle bauen APIs. Grob geschätzt bestehen 80 Prozent der heute entwickelten Anwendungen im Kern aus einer oder mehreren serverseitigen Komponenten, die Geschäftslogik kapseln und diese ihren Clients über ein RESTful API zur Verfügung stellen. Ist das REST-Paradigma einmal verstanden, dann sind REST-APIs klar und einfach zu benutzen.

Go ist eine einfache, statisch typisierte, kompilierte und performante Programmiersprache, die sich hervorragend für die Entwicklung von REST-APIs eignet. Eigenschaften wie leichte Erlernbarkeit, ein simples und leistungsfähiges Concurrency-Modell, sehr guter HTTP-, REST- und JSON-Support, Cross-Plattform-Fähigkeit sowie einfaches Deployment zeichnen Go aus. Dieser Beitrag führt in die wesentlichen Aspekte der REST-Entwicklung in Go anhand eines einfachen Beispiels ein. Der Artikel verzichtet dabei auf eine explizite Einführung der Programmiersprache Go. Stattdessen werden Go-spezifische Konzepte erklärt, wenn sie im Kontext des Beispiels zum Einsatz kommen.

REST am fachlichen Beispiel

Den fachlichen Hintergrund des Beispiel-API bildet ein einfaches Shopsystem. Das Domainmodell des Shops besteht aus den Entitäten Customer, Order und Product. Abbildung 1 zeigt deren Beziehungen, URIs sowie JSON-Repräsentationen.

Abb. 1: Shop als fachliches Beispiel

Abb. 1: Shop als fachliches Beispiel

Eine Ressource im REST-Kontext ist eine Abstraktion, die ein „Ding“ referenziert. Dieses Ding kann z. B. ein einzelner Kunde, eine Liste aller Kunden oder auch eine Liste von Kunden mit dem Namen Meyer sein. Ressourcen werden über URIs identifiziert. So identifiziert der URI /customers die Liste aller Kunden und die Ressource /customer/1 den Kunden mit der ID 1. Neben einer Identität besitzen Ressourcen eine oder mehrere Repräsentationen. Im Beispiel werden Ressourcen in JSON repräsentiert und in diesem Format zwischen Client und Server übertragen.

Beziehungen zwischen Ressourcen werden über Links beschrieben. Für HTML-repräsentierte Ressourcen wird häufig das HTML-Element <link> genutzt, während in JSON-Repräsentationen verlinkte Ressourcen als Listen von IDs beschrieben werden.

Das Anfragen, Anlegen, Verändern und Löschen von Ressourcen erfolgt über die HTTP-Methoden GET, POST, PUT und DELETE, im REST-Kontext auch als HTTP-Verben bezeichnet. So liefert GET /customers/1/orders/9 die Bestellung mit der ID 9, während DELETE /customers/1/orders/9 diese Bestellung löscht.

Das Shopbeispiel ist relativ einfach gehalten und kann entgegen gängigen Trends durchaus als monolithisches API entwickelt werden. Aus didaktischen Gründen entscheiden wir uns dennoch für eine Microservices-Architektur, sodass wir den Artikelfokus leichter auf den Catalog-Teil des API legen können.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin 2.18 - "Einstieg in Go"

Alle Infos zum Heft
579828468RESTful APIs in Go
X
- Gib Deinen Standort ein -
- or -