Creați API-uri RESTful cu Gin Framework

Publicat: 2022-09-02

Așteptați cu nerăbdare să creați un API REST cu ajutorul cadrului Gin? Apoi, ar trebui să citiți în detaliu acest blog. Prin pași simpli, vei învăța să creezi un API de bază, în urma căruia poți întreprinde și alte proiecte complexe. Și da, puteți rezolva lucrurile pe cont propriu, fără a beneficia de serviciile de dezvoltare Golang . Dar, înainte de a începe, cunoașteți aspectul teoretic al cadrului Gin.

  1. Prima sarcină de îndeplinit
  • Mai întâi trebuie să faci un director în spațiul tău de lucru. Veți folosi promptul de comandă dacă utilizați un computer Windows. Utilizați Terminalul dacă utilizați macOS sau Linux ca sistem de operare.
  • Voi folosi promptul de comandă în acest scenariu.

cd go-spațiu de lucru

mkdir job

munca cd

cod .

Pe măsură ce introducem codul ., putem vedea lansările VS Code. În cazul dvs., ar putea fi un alt IDE sau editor.

  1. Începeți cu codul VS
  • Primul lucru pe care îl vom face este să creăm un fișier main.go. În continuare, trebuie să descarcăm cadrul de gin pentru a crea API-urile REST.
  • Acum trebuie să construim un fișier go.mod. Tastam:

du-te la mod init golang.com/job

  • În urma creării fișierului go.mod, vom tasta:

du-te la github.com/gin-gonic/gin

Acest lucru va face ca fișierul go.sum să fie creat, precum și toate pachetele necesare legate de framework-ul gin să fie descărcate.

  1. Să începem cu un API simplu
  • Doar scriem codul

pachet principal

import (

„fmt”

„net/http”

„github.com/gin-gonic/gin”

)

func principal()

{s :=gin.Default()

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

c.String(http.StatusOK, „Care este rolul postului?”)

})

s.Run („localhost: 8000”)

}

  • După cum puteți vedea, am importat fiecare pachet necesar aplicației. Apoi trecem direct la funcția principal. Ceea ce facem este să construim un modul implicit de middleware de recuperare sau logger pentru Gin.
  • Setările implicite sunt incluse în variabila „s”. Și vom folosi această variabilă pentru a ajuta la dezvoltarea GET API. Primul argument pe care l-am dat în acest exemplu este adresa URL a API-ului.
  • Adresa URL de bază specificată de w.Run(„localhost:8000”) va fi utilizată pentru a găzdui API-ul la localhost:8000. În plus, primul argument indică de fapt ruta relativă a API-ului.
  • Funcția de gestionare func (c *gin.Context) se referă la secvența de funcții pe care o puteți oferi.
  • Indicatorul către variabila *gin.Context servește ca argument al funcției. Prin urmare, „c” în acest caz reprezintă context.
  • Contextul trebuie să returneze o valoare care este fie c.String, fie c.JSON. Aici, există două criterii în funcțiune. Starea este indicată de primul argument, un întreg simplu (http.StatusOK). Putem folosi acest lucru deoarece am importat pachetul net/http.
  • Trimit doar un șir de probă după asta. Este „Care este rolul postului?”
  1. Să rulăm programul de mai sus

Pentru a rula programul, trebuie să tastam go run main.go.

  • După cum puteți vedea, există prezența unei cereri GET pe un URL gol. De asemenea, vine cu o funcție personalizabilă. În plus, funcționarea în modul de eliberare a motorului este vizibilă. Există un singur punct final activ la localhost 8000.
  • Într-un browser web, putem introduce localhost:8000 pentru a vedea:
  • Între timp, veți putea vedea următorul instantaneu în VS Code

Ce inseamna asta? Ei bine, cadrul gin joacă un rol masiv aici în monitorizarea timpului de răspuns al codului care este executat.

  1. Concentrându-vă pe GET API unde trecerea parametrilor este gestionată de adresa URL

Codul care urmează presupune că API-ul vă va furniza o valoare, în mod ideal un șir, ca răspuns la adresa URL.

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

var val = c.Param(„getr”)

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

„responsedata”:val,

})

})

//secțiunea a 2-a

  • Putem furniza fiecare nume de variabilă în cererea GET, separându-le cu două puncte. Prin urmare, tot ceea ce este introdus după adresa URL de bază va fi considerat „obține”.
  • Pentru a determina valoarea „get”, trebuie să definim contextul Param și numele variabilei pe care am menționat-o. Val va primi „obținerea” de la Gin și va fi informată despre rezultat.
  • În continuare, vedem că transfer un JSON care conține valoarea.

Lucrezi la ceva complex? Atunci ar fi cea mai bună idee să folosiți serviciile de dezvoltare Golang în cazul în care dați peste o problemă și nu o puteți rezolva.

  1. Să rulăm programul de mai sus
  • Din nou, va trebui să rulăm programul tastând go run main.go.

Dacă vedeți mesajul „tcp 127.0.0.1: 8000: bind: Este permisă în mod normal o singură utilizare a fiecărei adrese de socket (protocol/adresă de rețea/port).”, atunci trebuie să efectuați o operație în linia de comandă.

nestat -ano | findstr:8000

Verificați valoarea LISTENING (de exemplu 7932), apoi trebuie să tastați

taskkill / pid 7932 /F

Acest lucru va duce la terminarea procesului pid.

  • Pe browser efectuăm următoarele:

Motivul pentru care a trebuit să introducem un șir după ce am precizat localhost:8000 este că API-ul așteaptă un șir de la adresa URL.

  1. Încercați un API POST
  • Vom încerca să ne conectăm la un API POST aici. Mai mult, suntem conștienți că datele vor fi prezente în organism. Acesta este momentul în care structura va fi utilă.
  • Vă amintiți această secțiune?

pachet principal

import (

„fmt”

„net/http”

„github.com/gin-gonic/gin”

)

  • În continuare, vom crea o structură cu două câmpuri de date, după cum puteți vedea:

tip Job struct {

Salariul int `json:”salariu” obligatoriu: “necesar”`

Șir de nume `json:”nume” binding: “required”`

}

  • Json:”salariu” și json:”nume” reprezintă diferitele chei. De asemenea, puteți vedea că legarea a fost specificată ca „obligatorie”.
  • Urmând //a doua secțiune, vom tasta:

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

var data Job

dacă greșește := c.ShouldBind(&date); err != nil{

fmt.Println (eroare)

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

„eroare”: fmt.Sprintf(„%v”, err),

})

} altfel{

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

„date”: date,

})

}

})

  • Să ne uităm la acest bloc de cod. În s.POST, vom construi obiectul pentru Job. După aceea, contextul „c” ar trebui să se atașeze modelului de date. Dacă c.ShouldBind(&data) afișează o eroare, va alerta API-ul despre problemă.
  • Am făcut o solicitare greșită care demonstrează eroarea care a fost observată în „error”:fmt.Sprintf(“%v”, err) în c.JSON(http.StatusBadRequest).
  • Dacă nu există probleme, cheia „date” va fi folosită pentru a transmite datele înapoi către răspunsul API.
  1. Să rulăm blocul final de cod
  • Să examinăm acum etapa finală a programului. Trebuie să scriem go run main.go pentru a face asta. În plus, voi folosi Postman pentru a arăta cum funcționează API-ul și cum funcționează codul. Versiunea desktop trebuie doar instalată.
  • Puteți vedea că am două câmpuri de date în corp dacă vă uitați la captura de ecran de mai jos. Raw și JSON ar trebui să fie alegerile pentru Body.
  • Pe măsură ce facem clic pe „Trimite”, vom ajunge să vedem următorul rezultat:

{

"date": {

„salariu”: 23000,

„nume”: „Robert Hall”

}

}

Ai reușit să înțelegi programul? Da? Atunci, grozav. În ultimul caz, ajungem să vedem trei API-uri rulând, cel fără nimic menționat în URL, cel care așteaptă un șir și apoi cel final care așteaptă valori în corp. Sperăm că puteți face față unor sarcini provocatoare REST API acum.