Je suis ce didacticiel pour créer une API Web ASP.NET Core et dans la section sur l'ajout d'un contrôleur, le didacticiel donne du code pour remplacer le code de modèle pour un contrôleur. L'une des choses qui a vraiment attiré mon attention est que dans le code du modèle, j'obtiens:
TodoController : Controller
Ensuite, dans le code du tutoriel que je suis censé utiliser à la place de cela, je trouve:
[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase
Je suis très intéressé de savoir pourquoi il est nécessaire de dériver de ControllerBase
au lieu de Controller
pour un contrôleur d'API Web. Pourquoi est-ce fait?
pourquoi il est nécessaire de dériver de
ControllerBase
au lieu deController
pour un contrôleur d'API Web.
Ce n'est pas strictement nécessaire, mais plus précisément. La classe Controller
dérive de ControllerBase
et ajoute certains membres nécessaires pour prendre en charge les vues.
Fondamentalement:
public class Controller : ControllerBase
{
public dynamic ViewBag { get; }
public virtual ViewResult View(object model) { }
// more
}
Lorsque vous écrivez une API, ControllerBase correspond mieux à vos besoins, mais les deux fonctionnent.