Crea API RESTful con Gin Framework
Pubblicato: 2022-09-02Non vedi l'ora di creare un'API REST con l'aiuto del framework Gin? Quindi, dovresti dare a questo blog una lettura approfondita. Attraverso semplici passaggi imparerai a creare un'API di base, a seguito della quale potrai intraprendere altri progetti complessi. E sì, puoi elaborare le cose da solo senza avvalerti dei servizi di sviluppo Golang . Ma, prima di iniziare, conosci l'aspetto teorico del framework Gin.
- Primo compito da portare a termine
- Devi prima creare una directory nel tuo go-workspace. Utilizzerai il prompt dei comandi se stai utilizzando un computer Windows. Usa il Terminale se usi macOS o Linux come sistema operativo.
- Userò il prompt dei comandi in questo scenario.
cd go-spazio di lavoro
lavoro mkdir
lavoro cd
codice .
Mentre digitiamo code ., vediamo l'avvio di VS Code. Nel tuo caso, potrebbe essere un IDE o un editor diverso.
- Inizia con il codice VS
- La prima cosa che faremo è creare un file main.go. Successivamente, dobbiamo scaricare il framework gin per creare le API REST.
- Ora dobbiamo creare un file go.mod. Digitiamo:
vai mod init golang.com/job
- Dopo la creazione del file go.mod, digiteremo:
vai a ottenere github.com/gin-gonic/gin
Ciò causerà la creazione del file go.sum e il download di tutti i pacchetti necessari relativi al framework gin.
- Iniziamo con un'API semplice
- Scriviamo solo il codice
pacchetto principale
importare (
"fmt"
“rete/http”
"github.com/gin-gonic/gin"
)
funzione principale()
{s :=gin.Default()
s.GET ("", func (c *gin.Context){
c.String(http.StatusOK, "Qual è il ruolo lavorativo?")
})
s.Run ("localhost: 8000")
}
- Come puoi vedere, abbiamo importato tutti i pacchetti richiesti dall'applicazione. Procediamo quindi direttamente alla funzione main. Quello che stiamo facendo è costruire un modulo predefinito del middleware di ripristino o logger per Gin.
- Le impostazioni predefinite sono incluse nella variabile "s". E useremo questa variabile per aiutare nello sviluppo dell'API GET. Il primo argomento che ho fornito in questo esempio è l'URL dell'API.
- L'URL di base specificato da w.Run(“localhost:8000”) verrà utilizzato per ospitare l'API su localhost:8000. Inoltre, il primo argomento indica effettivamente il percorso relativo dell'API.
- La funzione del gestore func (c *gin.Context) fa riferimento alla sequenza di funzioni che puoi fornire.
- Il puntatore alla variabile *gin.Context funge da argomento della funzione. Pertanto, la "c" in questo caso sta per contesto.
- Il contesto deve restituire un valore che sia c.String o c.JSON. Qui, ci sono due criteri in funzione. Lo stato è indicato dal primo argomento, un intero semplice (http.StatusOK). Possiamo usarlo perché abbiamo importato il pacchetto net/http.
- Sto semplicemente inviando una stringa di esempio dopo questo. È "Qual è il ruolo lavorativo?"
- Eseguiamo il programma sopra
Per eseguire il programma, dobbiamo digitare go run main.go.

- Come puoi vedere, c'è la presenza di una richiesta GET su un URL vuoto. Inoltre è dotato di una funzione personalizzabile. Inoltre, è visibile l'operazione in modalità di rilascio del motore. Esiste un singolo endpoint attivo su localhost 8000.
- In un browser web, possiamo digitare localhost:8000 per vedere:
- Nel frattempo, vedrai la seguente istantanea nel codice VS

Cosa significa questo? Bene, il framework gin sta giocando un ruolo enorme qui nel monitoraggio del tempo di risposta del codice che viene eseguito.
- Concentrandosi sull'API GET in cui il passaggio dei parametri è gestito dall'URL
Il codice che segue presuppone che l'API ti fornisca un valore, idealmente una stringa, in risposta all'URL.
s.GET(“/:get”, func (c *gin.Context){
var val = c.Param(“getr”)
c.JSON(http.StatusOK, gin.H{

“dati di risposta”:val,
})
})
//2a sezione
- Possiamo fornire ogni nome di variabile nella richiesta GET separandoli con due punti. Tutto ciò che viene inserito dopo l'URL di base sarà quindi considerato un "get".
- Per determinare il valore di "get", dobbiamo definire il contesto di Param e il nome della variabile che abbiamo menzionato. Val riceverà il "get" da Gin e verrà informato del risultato.
- Successivamente, vediamo che sto trasferendo un JSON che contiene il valore.
Stai lavorando a qualcosa di complesso? Quindi sarebbe l'idea migliore avvalersi dei servizi di sviluppo di Golang nel caso in cui ti imbatti in un problema e non riesci a risolverlo.
- Eseguiamo il programma sopra
- Ancora una volta, dovremo eseguire il programma digitando go run main.go.
Se viene visualizzato il messaggio 'tcp 127.0.0.1: 8000: bind: Normalmente è consentito un solo utilizzo di ciascun indirizzo socket (protocollo/indirizzo di rete/porta).', è necessario eseguire un'operazione nel prompt dei comandi.
nestat -ano | trovastr :8000
Verifica il valore di LISTENING (ad esempio 7932), quindi devi digitare
taskkill / pid 7932 /F
Ciò porterà alla conclusione del processo pid.
- Sul browser eseguiamo le seguenti operazioni:

Il motivo per cui abbiamo dovuto inserire una stringa dopo aver dichiarato localhost:8000 è perché l'API si aspetta una stringa dall'URL.
- Provare un'API POST
- Tenteremo di connetterci a un'API POST qui. Inoltre, siamo consapevoli che i dati saranno presenti nel corpo. Questo è quando la struttura tornerà utile.
- Ricordi questa sezione?
pacchetto principale
importare (
"fmt"
“rete/http”
"github.com/gin-gonic/gin"
)
- Successivamente, creeremo una struttura con due campi dati, come puoi vedere:
digita Struttura del lavoro {
Salary int `json:"salary" binding: "richiesto"`
Stringa del nome `json:"name" binding: "required"`
}
- Il json:"salary" e json:"name" rappresentano le diverse chiavi. Puoi anche vedere che l'associazione è stata specificata come "necessaria".
- Dopo la //2a sezione, digiteremo:
s.POST(“/highlight”, func (c *gin.Context){
var data Lavoro
se erro := c.ShouldBind(&data); err != zero{
fmt.Println (err)
c.JSON(http.StatusBadRequest, gin.H{
“errore”: fmt.Sprintf(“%v”, err),
})
} altro{
c.JSON(http.StatusOK, gin.H{
“dati” : dati,
})
}
})
- Diamo un'occhiata a questo blocco di codice. Nel POST, costruiremo l'oggetto per il Job. Successivamente il contesto "c" dovrebbe essere collegato al modello di dati. Se c.ShouldBind(&data) genera un errore, avviserà l'API del problema.
- Ho fatto una richiesta errata che dimostra l'errore che è stato osservato in "error":fmt.Sprintf("%v", err) in c.JSON(http.StatusBadRequest).
- Se non ci sono problemi, la chiave "data" verrà utilizzata per trasmettere i dati alla risposta dell'API.
- Eseguiamo il blocco di codice finale
- Esaminiamo ora la fase finale del programma. Dobbiamo digitare go run main.go per farlo. Inoltre, userò Postman per mostrare come funziona l'API e come funziona il codice. La versione desktop deve solo essere installata.
- Puoi vedere che ho due campi di dati nel corpo se guardi lo screenshot qui sotto. Raw e JSON dovrebbero essere le scelte per il Body.

- Facendo clic su "Invia", vedremo il seguente risultato:
{
"dati": {
“stipendio”: 23000,
“nome”: “Robert Hall”
}
}
Sei riuscito a capire il programma? Sì? Allora, fantastico. Nell'ultimo caso, vediamo tre API in esecuzione, quella senza nulla menzionato nell'URL, quella che si aspetta una stringa e poi quella finale che si aspetta valori nel corpo. Si spera che tu possa affrontare ora alcune attività impegnative dell'API REST.