Maison >développement back-end >C++ >Comment puis-je gérer efficacement la validation de modèle dans l'API Web ASP.NET ?

Comment puis-je gérer efficacement la validation de modèle dans l'API Web ASP.NET ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 15:18:10592parcourir

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

Gestion de la validation du modèle dans l'API Web ASP.NET

Lorsque vous travaillez avec des données dans vos applications de l'API Web ASP.NET, la validation du modèle joue un rôle rôle crucial dans la garantie de l’intégrité des données. La propriété ModelState fournit un mécanisme pratique pour valider les données de requête par rapport aux règles de votre modèle.

Considérez le scénario suivant :

Vous avez un modèle :

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; }
}

Dans votre API contrôleur, vous disposez d'une action Post :

public void Post(Enquiry enquiry)
{
    enquiry.EnquiryDate = DateTime.Now;
    context.DaybookEnquiries.Add(enquiry);
    context.SaveChanges();
}

Pour implémenter la validation du modèle, vous pouvez utiliser ModelState.IsValid property :

public void Post(Enquiry enquiry)
{
    if (ModelState.IsValid)
    {
        enquiry.EnquiryDate = DateTime.Now;
        context.DaybookEnquiries.Add(enquiry);
        context.SaveChanges();
    }
}

Si le modèle est valide, l'action procède à la création de l'entité dans la base de données. Sinon, il renvoie une réponse 400 (Bad Request) avec les messages d'erreur de validation.

Pour une séparation plus claire des préoccupations, vous pouvez également utiliser un filtre d'action pour la validation du modèle :

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);
        }
    }
}

Appliquer ce filtre à votre action Post :

[ValidationActionFilter]
public void Post(Enquiry enquiry)
{
    enquiry.EnquiryDate = DateTime.Now;
    context.DaybookEnquiries.Add(enquiry);
    context.SaveChanges();
}

En implémentant la validation du modèle à l'aide de l'une de ces approches, vous pouvez vous assurer que votre point de terminaison d'API n'accepte que des données valides et fournit des données significatives. messages d'erreur aux utilisateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn