私のpython/eve REST APIには、自明な処理を行うカスタムルートがあります。私はPOSTリクエストを受け取り、処理の後にこの文書をデータベースに送ります。しかし、Eveと同じ検証を使用してこの文書を検証できればいいです。私はcerberusを直接使うことができると知っていますが、それは私のスキーマにあるdata_relation
のようなものを扱いません。Eveがカスタムルート内のドキュメントを検証するように強制します
内部Eveバリデーターを呼び出す方法はありますか?
私のpython/eve REST APIには、自明な処理を行うカスタムルートがあります。私はPOSTリクエストを受け取り、処理の後にこの文書をデータベースに送ります。しかし、Eveと同じ検証を使用してこの文書を検証できればいいです。私はcerberusを直接使うことができると知っていますが、それは私のスキーマにあるdata_relation
のようなものを扱いません。Eveがカスタムルート内のドキュメントを検証するように強制します
内部Eveバリデーターを呼び出す方法はありますか?
デフォルトのバリデータ(またはカスタマイズした場合は独自のサブクラス)を使用できます。次のサンプルスニペットでは、データベースフックを使用します(ドキュメントはdb挿入の直前に処理されます)。
from eve.io.mongo import Validator
from flask import current_app
validator = Validator()
def on_insert(resource, documents):
schema = current_app.config['DOMAIN'][resource]['schema']
for document in items:
if not validator(document):
print validator.errors
app = Eve()
app.on_insert += on_insert
if __name__ == '__main__':
app.run()
この段階では、彼らはあなたが(可能性がスキーマに含まれていますが、アイデアを得るされていないなど_created
と_updated
、自動フィールドが含まれ、以来さて、この例では、すべて単一のドキュメント上のエラーを返しますバリデータインスタンスのプロパティをallow_unknown
に設定してこの問題を回避してください)。
私に面倒!私はすでにそれに定義されたいくつかのカスタムタイプのカスタムバリデーターを持っています。私はそれを使って自分の問題を解決することは考えていませんでした....ありがとう@NicolaIarocci、 –