ホームページ > バックエンド開発 > C++ > ASP.NET Web API でモデルの検証を効果的に処理するにはどうすればよいですか?

ASP.NET Web API でモデルの検証を効果的に処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-24 15:18:10
オリジナル
592 人が閲覧しました

How Can I Effectively Handle Model Validation in ASP.NET Web API?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート