Aller au contenu principal

24-1 Contrôleur EvenementsController (API)

Au niveau du projet d'API, sous le dossier Controllers, nous allons créer un contrôleur nommé EvenementsController.

Ce contrôleur, dans un premier temps, sera responsable de retourner une liste d'événements via une action Index.

Vous verrez que le fonctionnement n'est pas si différent d'un contrôleur MVC responsable de retourner une vue et un ViewModel. Ici, on retournera du JSON et un DTO.

Créer le contrôleur EvenementsController

Pour créer un contrôleur d'API spécifiquement, on peut utiliser un élément de scaffold à l'aide de Rider.

  1. Dans le projet Snowfall.Web.Api, clic droit sur le dossier Controllers -> Add -> Scaffolded Item...
  2. Nommez le contrôleur EvenementsController et comme gabarit, choisissez API Controller - Empty

Vous obtiendrez une base de contrôleur comme celle-ci:

Snowfall.Web.Api/Controllers/EvenementsController.cs
namespace Snowfall.Web.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class EvenementsController : ControllerBase
{
}
}
info

Remarquez que la route a comme préfixe api afin de clarifier qu'il s'agit de routes associées à une API et aussi afi d'éviter les collisions de route si pour un projet on a des routes classiques (ex.: MVC) et des routes d'API.

Injecter la dépendance à EvenementService

Snowfall.Web.Api/Controllers/EvenementsController.cs
public class EvenementsController : ControllerBase
{
private readonly IEvenementService _evenementService;

public EvenementsController(IEvenementService evenementService)
{
_evenementService = evenementService;
}
}

Créer une action Index

Tout comme dans un contrôleur Mvc, une action d'API peut être asynchrone et retourner IActionResult via Task:

Snowfall.Web.Api/Controllers/EvenementsController.cs
//...

// GET /api/evenements
[HttpGet]
public async Task<IActionResult> Index()
{
}

Ensuite, pour obtenir une liste d'événements, on n'a qu'à appeler le service.

Snowfall.Web.Api/Controllers/EvenementsController.cs
// GET /api/evenements
[HttpGet]
public async Task<IActionResult> Index()
{
List<Evenement> evenements = await _evenementService.GetAll();
}

Retourner une liste d'événements en JSON

Pour retourner la liste, il ne suffit que d'utiliser le code de retour désiré et de passer l'objet à sérialiser en argument!

Par exemple:

Snowfall.Web.Api/Controllers/EvenementsController.cs
public async Task<IActionResult> Index()
{
List<Evenement> evenements = await _evenementService.GetAll();

return Ok(evenements);
}

Tester l'API et le point de terminaison /api/evenements

Démarrez le projet d'API et, soit via Swagger directement, soit via Postman, testez le point de terminaison /api/evenements.

Test via Scalar

Pour tester via Scalar:

  1. Assurez-vous que l'API est démarrée
  2. Rendez-vous à l'interface Scalar via /scalar/v1
  3. Sélectionnez /api/Evenements à gauche sous Evenements
  4. Appuyez sur Test Request
  5. Appuyez finalement sur Send
  6. Apprécier img

Test via Postman

Pour tester via Postman, simplement vous assurer d'avoir l'URL complète à appeler ex.: http://localhost:5160/api/evenements et configurer la requête GET.

Imgur