3

Prismatic/schemaはフォーム検証に適していますか? 以前にフォーム検証ライブラリを設計したことはありませんが、例外をスローする代わりに、次のようなものを出力すると思いますs/validate

{::errors {:name [{:missing "Required field."}
                  {:length "Must be at least 3 characters."}]
           :email [{:email "Must be a valid email address"}]}}

誰かが Compojure と Liberator で使用したことを願っていますが、オンラインで何も見つかりません。

4

3 に答える 3

0

検証の失敗時に必要なエラーマップの説明から、 Validateurが適合するように見えます。Getting Started ページからの引用:

Validateur は、Ruby の ActiveModel に触発された検証ライブラリです。Validateur は機能的です。バリデーターは関数であり、検証セットは高階関数であり、検証結果は値として返されます。

この小さなコアの周りで、Validateur は、必要なカスタム バリデータで拡張できます。単純なコントラクトに準拠する Clojure 関数を定義するのと同じくらい簡単です。

于 2015-02-27T09:18:22.060 に答える
0

GitHubの Dante でいくつかの優れたヘルパーを見つけましたが、使用のライセンスは明確ではありません:

(ns dante.tools.schemas
  (:require [dante.tools.namespaces :refer [export]]
            [schema.core :as s]
            [schema.coerce :as coerce]
            [schema.utils :refer [validation-error-explain]])
  (:import [schema.utils NamedError ValidationError]))

(defn explain [errors]
  (cond
   (map? errors)
   (->> errors
        (map (fn [[k v]]
               [k (explain v)]))
        (into {}))

   (or (seq? errors)
       (coll? errors))
   (map explain errors)

   (instance? NamedError errors)
   [(.name errors)
    (explain (.error errors))]

   (instance? ValidationError errors)
   (str (validation-error-explain errors))

   :else
   (str errors)))

(defn- coercercions [schema]
  (or
   (coerce/+string-coercions+ schema)
   (coerce/set-matcher schema)))

(defn validate [schema value]
  ((coerce/coercer schema coercercions) value))
于 2014-09-18T11:50:54.577 に答える