ASP.NET Web API でのモデル検証の処理
ASP.NET Web API アプリケーションでデータを操作する場合、モデル検証はデータの整合性を確保する上で重要な役割を果たします。 ModelState プロパティは、モデルのルールに対してリクエスト データを検証するための便利なメカニズムを提供します。
次のシナリオを考えてみましょう:
モデルがあります:
public class Enquiry { [Key] public int EnquiryId { get; set; } [Required] public DateTime EnquiryDate { get; set; } [Required] public string CustomerAccountNumber { get; set; } [Required] public string ContactName { get; set; } }
API 内コントローラーの場合、Post アクションがあります:
public void Post(Enquiry enquiry) { enquiry.EnquiryDate = DateTime.Now; context.DaybookEnquiries.Add(enquiry); context.SaveChanges(); }
モデルの検証を実装するには、 ModelState.IsValid プロパティ:
public void Post(Enquiry enquiry) { if (ModelState.IsValid) { enquiry.EnquiryDate = DateTime.Now; context.DaybookEnquiries.Add(enquiry); context.SaveChanges(); } }
モデルが有効な場合、アクションはデータベース内にエンティティを作成します。それ以外の場合は、検証エラー メッセージとともに 400 (Bad Request) 応答が返されます。
懸念事項をより明確に分離するために、モデル検証にアクション フィルターを使用することもできます:
using System.Net; using System.Net.Http; using System.Web.Http.Controllers; using System.Web.Http.Filters; namespace System.Web.Http.Filters { public class ValidationActionFilter : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { var modelState = actionContext.ModelState; if (!modelState.IsValid) actionContext.Response = actionContext.Request .CreateErrorResponse(HttpStatusCode.BadRequest, modelState); } } }
Applyこのフィルターを Post アクションに追加します:
[ValidationActionFilter] public void Post(Enquiry enquiry) { enquiry.EnquiryDate = DateTime.Now; context.DaybookEnquiries.Add(enquiry); context.SaveChanges(); }
これらのアプローチのいずれかを使用してモデル検証を実装すると、API エンドポイントのみを確実に検証できます。有効なデータを受け入れ、ユーザーに意味のあるエラー メッセージを提供します。
以上がASP.NET Web API でモデルの検証を効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。