Vous êtes sur la page 1sur 11

Créez votre première API avec

ASP.NET Core Web API

Réalisé par : LATRACH EL HABIB

07-10-2023
IAII

0.1 Prérequis
— Visual Studio 2022
— SQL Server
— Postman ou Insomnia
— SDK ASP.NET Core

0.2 Création de l’API


0.2.1 Création d’un nouveau projet
Ouvrons Visual Studio, nous allons utiliser VS 2022, et créer une nouvelle application
ASP.NET Core Web API :

Maintenant, choisissons un nom et un emplacement pour notre projet :


IAII

Ensuite, nous voulons sélectionner .NET 7.0 dans la liste déroulante.Nous pouvons
continuer en cliquant sur le bouton Créer, et le projet commencera à s’initialiser :

0.2.2 Création des models


Nous allons créer un dossier nommé ”Models”, qui contiendra toutes les classes de
modèle (entités)
IAII

0.2.3 La classe de contexte et Connexion à la base de données


Maintenant, créons la classe de contexte, qui sera un composant intermédiaire pour la
communication avec la base de données. Elle doit hériter de la classe DbContext d’Entity
Framework Core et se compose de propriétés DbSet que EF Core va utiliser pour la
communication avec la base de données.Étant donné que nous travaillons avec la classe
DbContext, nous devons installer le package Microsoft.EntityFrameworkCore
a. Dans Visual Studio, ouvrez votre projet.
b. Cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions.
c. Sélectionnez ”Gérer les packages NuGet”.
d. Dans la fenêtre de gestion des packages NuGet, recherchez ”Microsoft.EntityFrameworkCore”.
e. Cliquez sur ”Installer” pour ajouter le package à votre projet

Après, ouvrons le fichier appsettings.json dans le projet principal et ajoutons la chaı̂ne


de connexion nommée ”sqlconnection”
{
” Logging ” : {
” LogLevel ” : {
” Default ”: ” Information ” ,
” M i c r o s o f t . AspNetCore ” : ”Warning”
}
},
” AllowedHosts ” : ” ∗ ” ,
” ConnectionStrings ”: {
” s q l c o n n e c t i o n ” : ” S e r v e r =( l o c a l d b )\\MSSQLLocalDB ;
Database=P r o d u i t P r o j e c t ; T r u s t e d C o n n e c t i o n=True ;
M u l t i p l e A c t i v e R e s u l t S e t s=t r u e ”
}
}
ouvrons le fichier program.cs dans le projet principal et ajoutons cette configuration .
cette configuration permet d’ajouter un DbContext à l’injection de dépendances de notre
application , de configurer le fournisseur de base de données et de récupérer la chaı̂ne de
connexion à partir de la configuration de l’application
b u i l d e r . S e r v i c e s . AddDbContext<A p p l i c a t i o n C o n t e x t >( o p t i o n s =>
options . UseSqlServer ( builder . Configuration .
IAII

G e t C o n n e c t i o n S t r i n g ( ” s q l c o n n e c t i o n ” ) ?? throw new
I n v a l i d O p e r a t i o n E x c e p t i o n ( ” Connection s t r i n g
’ b u i l d e r . S e r v i c e s . AddDbContext
A p p l i c a t i o n C o n t e x t ’ not found . ” ) ) ) ;

0.2.4 Migration et Données initiales


Passons maintenant à la partie de la migration de la base de données. Pour commencer,
nous allons installer les packages suivants :
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Relational
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer
en suivant les mêmes étapes d’installation que pour Microsoft.EntityFrameworkCore :
Maintenan Passon à Création des migrations :
Allez dans le menu ”Outils” (Tools) en haut de la fenêtre de Visual Studio, puis sélectionnez
”Gestionnaire de packages NuGet” (NuGet Package Manager) et enfin ”Console du Ges-
tionnaire de packages” (Package Manager Console). et tapez la commande suivant
PM> Add−M i g r a t i o n ” a j o u t e r un nom exmple i n i t i a l m i g r a t i o n ”

Avec cette commande, nous créons des fichiers de migration et nous pouvons les trouver
dans le dossier Migrations de notre projet principal.
IAII

Avec ces fichiers en place, nous pouvons appliquer la migration avec la commande :

PM> Update−Database

Excellent ! Vous pouvez maintenant inspecter votre base de données :


IAII

0.2.5 Services
Maintenant que nous avons créé notre service, ajoutons un dossier service , la classe
ProduitImpl et à l’interface IProduit

u s i n g M i c r o s o f t . EntityFrameworkCore ;
u s i n g p r o d u i t . models ;

namespace p r o d u i t . s e r v i c e
{
p u b l i c c l a s s ProduitIm pl : I P r o d u i t
{
private ApplicationContext context ;
p u b l i c ProduitImpl ( A p p l i c a t i o n C o n t e x t c o n t e x t )
{
t h i s . context = context ;
}

public int DeleteProduit ( int id )


{
var p r o d u i t = c o n t e x t . P r o d u i t S e t . Find ( i d ) ;
i f ( p r o d u i t != n u l l )
{
c o n t e x t . P r o d u i t S e t . Remove ( p r o d u i t ) ;
c o n t e x t . SaveChanges ( ) ;
return 1;
}
r e t u r n −1;
}

p u b l i c L i s t <Produit> G e t A l l P r o d u i t ( )
{
r e t u r n c o n t e x t . P r o d u i t S e t . ToList ( ) ;
}

p u b l i c P r o d u i t GetProduit ( i n t i d )
{
IAII

return c o n t e x t . P r o d u i t S e t . Find ( i d ) ;
}

public i n t saveProduit ( Produit produit )


{
c o n t e x t . Add( p r o d u i t ) ;
c o n t e x t . SaveChanges ( ) ;
return 1;
}

public i n t updateProduit ( Produit produit , i n t id )


{

var p r o d u i t 1 = c o n t e x t . P r o d u i t S e t . Find ( i d ) ;
i f ( p r o d u i t 1 != n u l l )
{
p r o d u i t 1 . Name = p r o d u i t . Name ;
produit1 . Prix = produit . Prix ;
produit1 . Description = produit . Description ;

c o n t e x t . SaveChanges ( ) ;
return 1;
}
r e t u r n −1;
}
}
}
En fin ouvrons le fichier program.cs et ajoutons cette configuration
b u i l d e r . S e r v i c e s . AddScoped<I P r o d u i t , ProduitImpl > ( ) ;
la ligne de code builder.Services.AddScoped¡IProduit, ProduitImpl¿() configure l’injec-
tion de dépendances dans notre application ASP.NET Core en enregistrant ProduitImpl
en tant qu’implémentation de l’interface IProduit. Cela signifie que lorsque vous deman-
dez IProduit dans d’autres parties de votre application (par exemple, dans un contrôleur),
ASP.NET Core fournira une instance de ProduitImpl pour vous. Cette approche permet
de découpler votre code et facilite le remplacement de l’implémentation par une autre
implémentation de IProduit à l’avenir sans avoir à changer le code qui l’utilise.
IAII

0.2.6 Controller
Maintenant que nous avons créé notre Produit Controller, ajoutons un controller API
ProduitController dans le dossier controller

using M i c r o s o f t . AspNetCore . Http ;


using M i c r o s o f t . AspNetCore . Mvc ;
using p r o d u i t . models ;
using produit . s e r v i c e ;

namespace p r o d u i t . C o n t r o l l e r s
{
[ Route ( ” a p i / [ c o n t r o l l e r ] ” ) ]
[ ApiController ]
public c las s ProduitController : ControllerBase
{
IAII

p r i v a t e IProduit produitFacade ;
public ProduitController ( IProduit produit )
{
produitFacade = produit ;
}
[ HttpGet ]
[ Route ( ” ” ) ]
p u b l i c L i s t <Produit> G e t A l l P r o d u i t ( )
{
return produitFacade . GetAllProduit ( ) ;
}
[ HttpGet ]
[ Route ( ” i d /{ i d } ” ) ]
p u b l i c P r o d u i t GetProduit ( i n t i d )
{
r e t u r n p r o d u i t F a c a d e . GetProduit ( i d ) ;
}
[ HttpPost ]
[ Route ( ” ” ) ]
p u b l i c i n t SaveProduit ( [ FromBody ] P r o d u i t p r o d u i t )
{
return produitFacade . saveProduit ( produit ) ;
}
[ HttpPut ]
[ Route ( ” i d /{ i d } ” ) ]
p u b l i c i n t UpdateProduit ( [ FromBody ] P r o d u i t p r o d u i t , i n t i d )
{
return produitFacade . updateProduit ( produit , id ) ;
}
[ HttpDelete ]
[ Route ( ” i d /{ i d } ” ) ]
public int DeleteProduit ( int id )
{
return produitFacade . DeleteProduit ( id ) ;
}

}
}

0.3 Testez votre API


Vous pouvez utiliser des outils tels que Postman , Swagger ou Insomnia pour tester
votre API.
Par défaut, vous pouvez accéder à votre API via https ://localhost :5001/api/pro-
duit/.
IAII

Vous aimerez peut-être aussi