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.
- Dans le projet
Snowfall.Web.Api
,clic droit
sur le dossierControllers
->Add
->Scaffolded Item...
- Nommez le contrôleur
EvenementsController
et comme gabarit, choisissezAPI Controller - Empty
Vous obtiendrez une base de contrôleur comme celle-ci:
namespace Snowfall.Web.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class EvenementsController : ControllerBase
{
}
}
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
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
:
//...
// GET /api/evenements
[HttpGet]
public async Task<IActionResult> Index()
{
}
Ensuite, pour obtenir une liste d'événements, on n'a qu'à appeler le service.
// 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:
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:
- Assurez-vous que l'API est démarrée
- Rendez-vous à l'interface
Scalar
via/scalar/v1
- Sélectionnez
/api/Evenements
à gauche sousEvenements
- Appuyez sur
Test Request
- Appuyez finalement sur
Send
- Apprécier
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
.