Ich möchte hinzufügen, dynamisch einen HTTP-Router erstellen benutzerdefinierte plugins/middleware verwenden, zur Zeit, ich config.yml
zum Beispiel bin mit:Wie dynamisch Importe
plugins:
- waf
- jwt
- cors
Nach dem yml
Datei Parsen erstelle ich die Routen wie folgt aus:
route := violetear.New()
chain := middleware.New()
for _, plugin := range Plugins {
chain := chain.Append(plugin)
}
router.Handle("/test", chain.Then(myHandler))
log.Fatal(http.ListenAndServe(":8080", router))
Damit dies funktioniert, würde ich alle Plugins in dem Import-Abschnitt enthalten hat, so etwas wie:
import (
"net/http"
"github.com/nbari/violetear"
"github.com/nbari/violetear/midleware"
// How to deal with this
"github.com/example/waf"
"github.com/example/jwt"
"github.com/example/cors"
)
ich müsste das aktuelle Config-Format ändern wahrscheinlich etwas mehr sinnvoll/generisch sein etwas wie:
plugins:
- [github.com/foo, foo]
- [github.com/bar, bar]
Aber außer dass das, was der beste Ansatz sein könnte „dynamisch“, um die Importe zu erstellen oder zu erzeugen, der Code, den man später kompilieren könnte?
Irgendwelche Ideen?
Hallo, ich habe darüber nachgedacht, mit 'generate' gehen und eine' Makefile' verwenden zu erzeugen und später bauen vielleicht könnte arbeitest du irgendwelche Gedanken? – nbari
@nbari Ja, wenn Sie mit der Vorverarbeitung in Ordnung sind, können Sie generieren, kann nützlich sein, aber es wird nicht dynamisch sein, wie Sie im ersten Satz Ihrer Frage angefordert. – icza