私は残りのAPIのjson検証を管理しようとしています。私はgithub.com/xeipuuv/gojsonschema
パッケージを使用して実装することを決めました。複数のgojsonschemasを後で使用するためにロードする
func (a Auth) Login(w http.ResponseWriter, r *http.Request) {
bodyBytes, err := ioutil.ReadAll(r.Body)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
cwd, _ := os.Getwd()
src := "file://" + cwd + "/schemas/auth.json"
schemaLoader := gojsonschema.NewReferenceLoader(src)
...
上記はうまく動作しますが、すべてのAPIリクエストでスキーマを読み込む必要があるため、うれしいです。
私のアプリの設定では、後で使うためにすべてのスキーマをスキーマのマップにロードしたいと思っています。
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)
戻り*jsonReferenceLoader
- jsonReferenceLoaderがパッケージ外に輸出されていません。
// 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,
}
}
上記の問題を解決するためのヒントやヒントはありますか?
、それはあなたが必要とするすべてでなければなりませんそれと相互作用する。 – Marc
@Marc - あなたは答えに例を挙げることができますか?私は答えとしてそれを受け入れることができますか? – Gravy