設定データ入力を制御するための検証ポリシーを追加してください
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Commerce EngineはPlugin.Validation.PolicySet(the-plugin-validation-policyset.md "The Plugin.Validation.PolicySet") JSONファイル内に複数のデフォルト検証ポリシーをあらかじめ定義し、データ入力値を検証します。ポリシーセットファイルを更新してカスタム検証ポリシーを追加したり、既存のポリシーを変更したりして特定のビジネスルールを強制し、データの整合性を確保することができます。
検証ポリシーは、Business Toolsインターフェースで入力されたデータおよびAPIリクエストで入力されたデータに適用されます。
以下の手順は、ショッピングカートの命名規則の例を強制するための新しいカスタム検証ポリシーを追加する方法を示しています。
- カート名は英数字の文字のみを含められます。
- カート名の長さは4文字から10文字の間でなければなりません。
カスタム検証ポリシーを追加するには:
-
Commerce Engineのサービスインスタンスで、wwwroot\data\Environments\Plugin.Validation.PolicySet-1.0.0.jsonファイルを開いてください。
-
ファイルの一番下に行き、以下のサンプルに示されているポリシーを追加します。
- "TypeFullName"は、検証すべきプロパティ値を定義するCartエンティティクラスの名前空間に対応します。
- "Name"プロパティは検証対象のエンティティプロパティ値の名前であり、この場合はプロパティ"Name"カートです。
- "MinLength"プロパティは、"Name"値が有効であるために必要な最低文字数を強制します。
- "MaxLength"プロパティは、"Name"値が有効であるために許される最大文字数を強制します。
- "RegexValidator"プロパティは、英数字文字のみを許容する正規表現を定義します。
- "RegexValidatorErrorCode"値は、エラーメッセージが定義されるCommerce Termを指します。
{ "$type": "Sitecore.Commerce.Core.ValidationPolicy, Sitecore.Commerce.Core", "TypeFullName": "Sitecore.Commerce.Plugin.Carts.Cart",, "Models": { "$type": "System.Collections.Generic.List`1Sitecore.Commerce.Core.Model, Sitecore.Commerce.Core, mscorlib", "$values": { "$type": "Sitecore.Commerce.Core.ValidationAttributes, Sitecore.Commerce.Core", "Name": "Name", "MinLength": 4, "MaxLength": 10, "RegexValidator": "^\\w\\s*$", "RegexValidatorErrorCode": "AlphanumericOnly_NameValidationError" }
} }
-
Bootstrap the Commerce Engine(商取引エンジン)を導入してください。
!注ブートストラップが完了したら、Send Sample Request Get Environmentを使い、返送された回答に自分の変更が含まれているか確認できます。
-
オプションで、Commerce Engineが期待されるエラーメッセージを返すことを確認するために、無効なPostmanリクエストを送信することもできます。 Add Mira Laptopサンプルリクエストでは、"CartId" 入力値を無効な文字(例えば "Cart01!")を含め、感嘆符が正規表現バリデーターに拒否される形に変更してください。
返送された回答の "Messages" セクションには以下のエラーメッセージが含まれています:
"Messages": { "MessageDate": "2021-07-28T15:`15
`.7992017Z", "Code": "ValidationError", "Text": "Only alphanumeric characters are allowed in the Name.", "CommerceTermKey": "AlphanumericOnly_NameValidationError" }, { "MessageDate": "2021-07-28T15:`15`.803528Z", "Code": "Warning", "Text": "Transaction failed and rolled back.", "CommerceTermKey": "TransactionError" }!注あるいは、\wwwroot\CommerceEngineServic>\wwwroot\logsフォルダにあるCommerce Engineのログファイルを確認することもできます。