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
Libérer: 2024-12-24 15:18:10
original
583 Les gens l'ont consulté

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; }
}
Copier après la connexion

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();
}
Copier après la connexion

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();
    }
}
Copier après la connexion

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);
        }
    }
}
Copier après la connexion

Appliquer ce filtre à votre action Post :

[ValidationActionFilter]
public void Post(Enquiry enquiry)
{
    enquiry.EnquiryDate = DateTime.Now;
    context.DaybookEnquiries.Add(enquiry);
    context.SaveChanges();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal