Ich versuche, Json-Validierung für meine Rest API zu verwalten. Ich habe mich entschieden, das github.com/xeipuuv/gojsonschema
Paket zu implementieren.laden mehrere gojsonschemas für die spätere Verwendung
Oben funktioniert gut, aber ich bin nicht glücklich, denn für jede API-Anfrage muss das Schema geladen werden.
Also in meinem App-Setup möchte ich alle Schemas in eine Karte von Schemas für die spätere Verwendung laden.
package schemas
import (
"os"
"path/filepath"
"strings"
"github.com/xeipuuv/gojsonschema"
)
const ext = ".json"
func LoadSchemas() error {
pathS, err := os.Getwd()
if err != nil {
return err
}
var files = make(map[string]*gojsonschema.jsonReferenceLoader) // This is where I am stuck...
filepath.Walk(pathS+"/schemas", func(path string, f os.FileInfo, _ error) error {
if !f.IsDir() {
if filepath.Ext(path) == ext {
key := strings.TrimRight(f.Name(), ext)
files[key] = gojsonschema.NewReferenceLoader("file://" + path)
}
}
return nil
})
return nil
}
gojsonschema.NewReferenceLoader("file://" + path)
kehrt *jsonReferenceLoader
- jsonReferenceLoader außerhalb des Pakets nicht exportiert wird.
// NewReferenceLoader returns a JSON reference loader using the given source and the local OS file system.
func NewReferenceLoader(source string) *jsonReferenceLoader {
return &jsonReferenceLoader{
fs: osFS,
source: source,
}
}
Alle Hinweise/Tipps zur Lösung des oben genannten Problems?
jsonReferenceLoader implementiert die Schnittstelle [JSONLoader] (https://godoc.org/github.com/xeipuuv/gojsonschema#JSONLoader), dass alle sollten Sie brauchen damit zu interagieren. – Marc
@Marc - Könnten Sie Beispiel in einer Antwort angeben und ich kann das als Antwort bitte akzeptieren? – Gravy