Erstellen Sie RESTful APIs mit dem Gin Framework

Veröffentlicht: 2022-09-02

Freust du dich darauf, mit Hilfe des Gin-Frameworks eine REST-API zu erstellen? Dann sollten Sie diesen Blog gründlich lesen. In einfachen Schritten lernen Sie, eine grundlegende API zu erstellen, nach der Sie andere komplexe Projekte durchführen können. Und ja, Sie können die Dinge selbst ausarbeiten, ohne die Golang-Entwicklungsdienste in Anspruch nehmen zu müssen . Aber bevor wir anfangen, sollten Sie sich mit dem theoretischen Aspekt des Gin-Frameworks vertraut machen.

  1. Erste zu erfüllende Aufgabe
  • Sie müssen zuerst ein Verzeichnis in Ihrem go-Arbeitsbereich erstellen. Sie verwenden die Eingabeaufforderung, wenn Sie einen Windows-Computer verwenden. Verwenden Sie das Terminal, wenn Sie macOS oder Linux als Betriebssystem verwenden.
  • Ich werde in diesem Szenario die Eingabeaufforderung verwenden.

cd go-arbeitsbereich

mkdir-Job

CD-Job

Code .

Während wir code . eingeben, sehen wir die Starts von VS Code. In Ihrem Fall könnte es sich um eine andere IDE oder einen anderen Editor handeln.

  1. Beginnen Sie mit dem VS-Code
  • Als erstes erstellen wir eine main.go-Datei. Anschließend müssen wir das Gin-Framework herunterladen, um die REST-APIs zu erstellen.
  • Wir müssen jetzt eine go.mod-Datei erstellen. Wir tippen:

Gehen Sie zu mod init golang.com/job

  • Nach der Erstellung der go.mod-Datei geben wir Folgendes ein:

Gehen Sie zu github.com/gin-gonic/gin

Dadurch wird die go.sum-Datei erstellt und alle erforderlichen Pakete im Zusammenhang mit dem Gin-Framework heruntergeladen.

  1. Beginnen wir mit einer einfachen API
  • Wir schreiben einfach den Code auf

Paket Haupt

importieren (

„fmt“

„net/http“

„github.com/gin-gonic/gin“

)

func main()

{s :=gin.Default()

s.GET ("", func (c *gin.Context){

c.String(http.StatusOK, „Was ist die berufliche Rolle?“)

})

s.Run („localhost: 8000“)

}

  • Wie Sie sehen können, haben wir jedes Paket importiert, das die Anwendung benötigt. Wir gehen dann direkt zur Funktion main über. Wir bauen ein Wiederherstellungs- oder Logger-Middleware-Standardmodul für Gin.
  • Die Standardeinstellungen sind in der Variablen „s“ enthalten. Und wir werden diese Variable verwenden, um die GET-API-Entwicklung zu unterstützen. Das erste Argument, das ich in diesem Beispiel angegeben habe, ist die URL der API.
  • Die von w.Run("localhost:8000") angegebene Basis-URL wird verwendet, um die API unter localhost:8000 zu hosten. Darüber hinaus gibt das erste Argument tatsächlich die relative Route der API an.
  • Die Handler-Funktion func (c *gin.Context) bezieht sich auf die Funktionssequenz, die Sie angeben können.
  • Als Argument der Funktion dient der Zeiger auf die Variable *gin.Context. Daher steht das „c“ in diesem Fall für Kontext.
  • Der Kontext muss einen Wert zurückgeben, der entweder c.String oder c.JSON ist. Hier sind zwei Kriterien in Betrieb. Der Status wird durch das erste Argument angegeben, eine einfache ganze Zahl (http.StatusOK). Wir können dies verwenden, weil wir das net/http-Paket importiert haben.
  • Ich schicke danach lediglich eine Beispielzeichenfolge. Es ist "Was ist die berufliche Rolle?"
  1. Lassen Sie uns das obige Programm ausführen

Um das Programm auszuführen, müssen wir go run main.go eingeben.

  • Wie Sie sehen können, ist eine GET-Anforderung auf einer leeren URL vorhanden. Es kommt auch mit einer anpassbaren Funktion. Außerdem ist der Freigabemodus des Motors sichtbar. Es gibt einen einzelnen aktiven Endpunkt bei localhost 8000.
  • In einem Webbrowser können wir localhost:8000 eingeben, um Folgendes anzuzeigen:
  • In der Zwischenzeit sehen Sie den folgenden Schnappschuss im VS-Code

Was bedeutet das? Nun, das Gin-Framework spielt hier eine große Rolle bei der Überwachung der Reaktionszeit des ausgeführten Codes.

  1. Konzentration auf die GET-API, bei der die Parameterübergabe von der URL abgewickelt wird

Der folgende Code geht davon aus, dass die API Ihnen als Antwort auf die URL einen Wert, idealerweise eine Zeichenfolge, bereitstellt.

s.GET(“/:get”, func (c *gin.Context){

var val = c.Param("getr")

c.JSON(http.StatusOK, gin.H{

„Antwortdaten“:val,

})

})

// 2. Abschnitt

  • Wir können jeden Variablennamen in der GET-Anforderung bereitstellen, indem wir sie durch einen Doppelpunkt trennen. Alles, was nach der Basis-URL eingegeben wird, wird daher als „Get“ betrachtet.
  • Um den Wert von „get“ zu bestimmen, müssen wir den Kontext von Param und den Namen der erwähnten Variablen definieren. Val erhält das 'Get' von Gin und wird über das Ergebnis informiert.
  • Als nächstes sehen wir, dass ich einen JSON übertrage, der den Wert enthält.

Arbeiten Sie an etwas Komplexem? Dann wäre es die beste Idee, die Golang-Entwicklungsdienste in Anspruch zu nehmen, falls Sie auf ein Problem stoßen und es nicht beheben können.

  1. Lassen Sie uns das obige Programm ausführen
  • Auch hier müssen wir das Programm ausführen, indem wir go run main.go eingeben.

Wenn Sie die Meldung 'tcp 127.0.0.1: 8000: bind:Nur eine Verwendung jeder Socket-Adresse (Protokoll/Netzwerkadresse/Port) ist normalerweise erlaubt.' sehen, müssen Sie eine Operation in der Eingabeaufforderung ausführen.

nestat -ano | findstr :8000

Überprüfen Sie den Wert von LISTENING (z. B. 7932), dann müssen Sie ihn eingeben

taskkill / pid 7932 /F

Dies führt zur Beendigung des PID-Prozesses.

  • Auf dem Browser führen wir Folgendes aus:

Der Grund, warum wir nach der Angabe von localhost:8000 einen String eingeben mussten, liegt darin, dass die API einen String von der URL erwartet.

  1. Versuch einer POST-API
  • Wir versuchen hier, eine Verbindung zu einer POST-API herzustellen. Darüber hinaus sind wir uns bewusst, dass Daten im Körper vorhanden sein werden. Hier wird sich die Struktur als nützlich erweisen.
  • Erinnern Sie sich an diesen Abschnitt?

Paket Haupt

importieren (

„fmt“

„net/http“

„github.com/gin-gonic/gin“

)

  • Anschließend erstellen wir eine Struktur mit zwei Datenfeldern, wie Sie sehen können:

Typ Jobstruktur {

Gehalt int `json:”Gehalt” Bindung: “erforderlich”`

Namenszeichenfolge „json:“Name“ Bindung: „erforderlich““.

}

  • json:“salary“ und json:“name“ repräsentieren die verschiedenen Schlüssel. Sie können auch sehen, dass die Bindung als „erforderlich“ angegeben wurde.
  • Nach dem //2. Abschnitt geben wir Folgendes ein:

s.POST(“/highlight”, func (c *gin.Context){

var data Job

if err := c.ShouldBind(&data); ähm != nil{

fmt.Println (err)

c.JSON(http.StatusBadRequest, gin.H{

„Fehler“: fmt.Sprintf(“%v“, Fehler),

})

} anders{

c.JSON(http.StatusOK, gin.H{

„Daten“ : Daten,

})

}

})

  • Schauen wir uns diesen Codeblock an. Im s.POST konstruieren wir das Objekt für den Job. Danach sollte der Kontext „c“ an das Datenmodell angehängt werden. Wenn c.ShouldBind(&data) einen Fehler auslöst, wird die API auf das Problem aufmerksam gemacht.
  • Ich habe eine ungültige Anfrage gestellt, die den Fehler zeigt, der in „error“:fmt.Sprintf(“%v“, err) in c.JSON(http.StatusBadRequest) beobachtet wurde.
  • Wenn es keine Probleme gibt, wird der „Daten“-Schlüssel verwendet, um die Daten zurück an die API-Antwort zu übertragen.
  1. Lassen Sie uns den letzten Codeblock ausführen
  • Betrachten wir nun die letzte Phase des Programms. Dazu müssen wir go run main.go eingeben. Außerdem verwende ich Postman, um zu zeigen, wie die API funktioniert und wie der Code funktioniert. Die Desktop-Version muss lediglich installiert werden.
  • Sie können sehen, dass ich zwei Datenfelder im Körper habe, wenn Sie sich den Screenshot unten ansehen. Raw und JSON sollten die Optionen für den Body sein.
  • Wenn wir auf „Senden“ klicken, sehen wir das folgende Ergebnis:

{

"Daten": {

„Gehalt“: 23000,

„Name“: „Robert Halle“

}

}

Konnten Sie das Programm verstehen? Ja? Dann super. Im letzten Fall sehen wir drei ausgeführte APIs, die eine ohne Erwähnung in der URL, die eine, die eine Zeichenfolge erwartet, und die letzte, die Werte im Körper erwartet. Hoffentlich können Sie jetzt einige herausfordernde REST-API-Aufgaben angehen.