Torna al contenuto principale

Gestione delle rotte

Go-Jet gestisce tutte le richiesta HTTP in arrivo attraverso dei router. Questi sono semplici strutture che definiscono tutte le rotte/gruppi disponibili all'interno del servizio web. È possibile visionare/creare/modificare i router esistenti modificando il contenuto del pacchetto router.

I router devono essere un istanza di tipo register.HTTPRouter e devono implementere almeno una rotta o un gruppo.

Esempio di un router
// HTTPRouter contains Route and Group that defines a complete HTTP Router
type HTTPRouter struct {
Route []Route
Groups []Group
}

Le rotte

La struttura di tipo Route definisce una rotta.

The Route structure
// Route defines an HTTP Router endpoint
type Route struct {
Name string
Path string
Action string
Method string
Description string
Validation interface{}
Middleware []Middleware
}

Come è possibile vedere, la struttura contiene i seguenti campi:

CampoDescrizione
NameNome della rotta
PathPercorso della rotta
ActionNome della funzione di callback
MethodMetodo HTTP
DescriptionDescrizione della rotta
ValidationStruttura di validazione
MiddlewareMiddlewares da applicare

I gruppi

I gruppi sono strutture che contengono una serie di Route raggruppati da un prefisso.

The Group structure
// Group defines a group of HTTP Route
type Group struct {
Name string
Prefix string
Routes []Route
Middleware []Middleware
}
CampoDescrizione
NameNome del gruppo
PrefixPrefisso del gruppo
RoutesRotte del gruppo
MiddlewareMiddlewares da applicare

Esempio di un router

Di seguito è riportato l'esempio di un router:

Esempio di un router
package router

import (
"github.com/shahind/go-jet-framework/register"
"github.com/shahind/go-jet/app/http/validation"
)

var AuthRouter = register.HTTPRouter{
Route: []register.Route{
{
Name: "login",
Path: "/login",
Action: "AuthController@JWTAuthentication",
Method: "POST",
Validation: &validation.Credentials{},
Description: "Perform login",
Middleware: []register.Middleware{},
},
{
Name: "basic login",
Path: "/basic-auth",
Action: "AuthController@BasicAuthentication",
Method: "POST",
Validation: &validation.Credentials{},
Description: "Basic authentication",
Middleware: []register.Middleware{},
},
},
}

danger

Tutti i router, per poter essere implementati devono essere registrati all'interno del pacchetto register.

Registrazione dei router
// BaseEntities returns a struct that contains Go-Jet base entities
func BaseEntities() foundation.BaseEntities {
return foundation.BaseEntities{
// ... your base entities here ...
// Router contains all application routes
Router: []register.HTTPRouter{
router.AppRouter,
router.AuthRouter,
},
}
}