Per esigenze di personalizzazione più avanzate, Goa fornisce un sistema di plugin. I plugin offrono un controllo più profondo sulla generazione del codice quando i metadati da soli non sono sufficienti.
I plugin possono:
var _ = Service("calc", func() {
// DSL Core di Goa
Description("Servizio calcolatrice")
// DSL del Plugin
cors.Origin("/.*localhost.*/", func() {
cors.Headers("X-Shared-Secret")
})
})
func Generate(genpkg string, roots []eval.Root, files []*codegen.File) ([]*codegen.File, error) {
// Modifica o aggiungi file generati
return files, nil
}
Per utilizzare un plugin esistente:
goa gen
come al solitoimport (
. "goa.design/goa/v3/dsl"
cors "goa.design/plugins/v3/cors/dsl"
)
Per informazioni dettagliate sulla creazione e l’utilizzo dei plugin, consulta la sezione Plugin.