PublicHolidayAPI est une API RESTful développée avec ASP.NET Core, conçue pour fournir une gestion centralisée des jours fériés. Elle permet d'éviter les erreurs liées à la planification sur des dates non ouvrables.
Dans de nombreux systèmes (gestion des congés, planning RH, logiciels de réservation ou de facturation), il est essentiel d’éviter de programmer des événements les week-ends ou les jours fériés.
PublicHolidayAPI permet de :
- D'accéder à une liste des jours fériés.
- Ajouter, modifier ou supprimer des jours fériés.
- Filtrer les jours fériés par année.
- Intégrer facilement l’API dans une interface utilisateur.
- Calculer les jours ouvrés entre deux dates, en excluant les samedis, dimanches et jours fériés.
- CRUD des jours fériés (
Holiday) - Base de données InMemory (prête à être remplacée)
- Documentation Swagger
- Authentification JWT
- CORS configuré pour le frontend
- Interface frontend de sélection de plages de dates :
- Calendrier dynamique
- Plages de dates excluant week-ends et jours fériés
- Calcul de jours ouvrés via un endpoint dédié
L’API propose un endpoint de login permettant d'obtenir un token JWT (valide 15 min).
Exemple d’utilisateur :
{
"userName": "jason_admin",
"password": "MyPass_w0rd"
}🔑 Une fois connecté, ajoutez votre token JWT dans Swagger pour effectuer les actions sur les end-points protégées.
| Méthode | Endpoint | Description | Auth requise |
|---|---|---|---|
GET |
/api/Holidays |
Récupère tous les jours fériés | ❌ |
GET |
/api/Holidays/year/{year} |
Jours fériés d'une année spécifique | ❌ |
POST |
/api/Holidays |
Ajout d’un ou plusieurs jours fériés | ✅ |
PUT |
/api/Holidays/{id} |
Modification d’un jour férié | ✅ |
PATCH |
/api/Holidays/{id} |
Modification partielle d’un jour férié | ✅ |
DELETE |
/api/Holidays/{id} |
Suppression d’un jour férié | ✅ |
POST |
/api/Holidays/workdays |
Calcule le nombre de jours ouvrés entre deux dates | ✅ |
POST |
/api/Login |
Connexion (renvoie un token JWT) | ❌ |
Requête :
POST /api/Holidays/workdays
Content-Type: application/json
{
"startDate": "2025-07-29",
"endDate": "2025-08-02"
}Réponse :
3Si les 29, 30, 31 juillet sont des jours ouvrés et que le 1er août est un week-end ou un jour férié, alors seuls les jours ouvrés sont comptés dans le résultat.
Le projet inclut une interface frontend légère directement prête à l’emploi et qui permet de :
- Tester la récupération des dates des jours fériés
- Visualiser les jours fériés et week-ends désactivés.
- Sélectionner une plage de dates.
📁 Voir : index.html, script.js, style.css
Vous pouvez interroger l’API depuis n’importe quelle application web (HTML, JavaScript, React, Vue, etc.) en utilisant fetch ou axios.
fetch("https://localhost:7057/api/Holidays")
.then(res => res.json())
.then(data => console.log(data));- Obtenez un token JWT via l’endpoint
/api/Login:
const loginRes = await fetch("https://localhost:7057/api/Login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
userName: "jason_admin",
password: "MyPass_w0rd"
})
});
const token = await loginRes.text(); // JWT string- Utilisez ce token dans vos requêtes protégées :
fetch("https://localhost:7057/api/Holidays", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${token}`
},
body: JSON.stringify([
{ name: "Jour de repos", date: "2025-08-16" }
])
})
.then(res => {
if (res.ok) console.log("Ajouté !");
else console.warn("Échec");
});- Cloner le repo
- Lancer via Visual Studio ou en ligne de commande :
dotnet run
- Accéder à Swagger :
https://localhost:7057/swagger/index.html
- Projet réalisé dans le cadre d'une évaluation ASP.NET Core WebAPI
- Par : Mika MANTTARI
- Date : Juillet 2025