Ajouter un endpoint à BookingSystem.Api

VérifiéSûr

Procédure pas à pas pour ajouter un endpoint API en respectant les conventions du dépôt : DTO, service, contrôleur, autorisation, tests et gestion de la concurrence.

Spar Skills Guide Bot
DeveloppementIntermédiaire
21/10/2026
Claude Code
#dotnet#api-endpoints#code-conventions#concurrency#xunit

Recommandé pour

Synthèse automatique

Guide de conventions pas à pas pour ajouter un nouvel endpoint API dans le projet BookingSystem.Api (DTO, service, contrôleur, autorisation, tests).

Points forts

  • Séquence ordonnée et explicite (DTOs → service → contrôleur → autorisation → tests) qui rend le travail reproductible
  • Inclut une règle concrète sur les lectures-écritures concurrentes avec renvoi d'un résultat « conflit » plutôt qu'une exception
  • Précise les codes de statut attendus (Ok/Created/Conflict/NotFound) et interdit le 500 nu pour un cas prévisible
  • Rappelle les tests xUnit obligatoires, y compris un test de concurrence basé sur ConcurrencyTests.cs

Limites

  • Fortement couplé à l'architecture et aux noms de fichiers d'un projet précis (BookingSystem.Api), peu réutilisable tel quel ailleurs
  • Ne détaille pas la syntaxe exacte des DTOs, services ou du pattern d'update conditionnel, il faut se référer au code existant
  • L'étape frontend reste vague et suppose le helper api() déjà présent dans frontend/app.js
Quand l'utiliser

À utiliser lorsqu'on ajoute ou modifie un endpoint dans BookingSystem.Api et qu'on veut respecter les conventions existantes du dépôt.

Quand l'éviter

À éviter pour un autre projet, une autre stack, ou pour des tâches sans rapport avec la création d'endpoints (refonte de schéma, CI, documentation).

Analyse de sécurité

Sûr
Score qualité88/100

This is a pure procedural/editorial guideline document describing how to add an endpoint in a .NET codebase. It declares no tools, contains no executable commands beyond standard `dotnet build && dotnet test` verification, and performs no network, filesystem-destructive, obfuscated, or exfiltration actions. No prompt-injection or instruction-override attempts were present in the content.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

New cancel endpoint
Add a POST /api/bookings/{id}/cancel endpoint to BookingSystem.Api, following the project conventions.
Admin-only endpoint
Add an admin-only GET endpoint that lists all bookings for a given slot, with authorization and tests.
Concurrency-safe endpoint
Add an endpoint that reassigns a booking to another slot, make it safe against concurrent writes, and cover it with a concurrency test.

name: add-booking-endpoint description: Use when adding a new API endpoint to BookingSystem.Api, to keep controller/service/DTO/test structure consistent with the rest of the codebase.

Adding a new endpoint to BookingSystem.Api

Follow this sequence so new endpoints match the codebase's conventions (see CLAUDE.md):

  1. DTOs first. Add request/response record types to the relevant file in DTOs/ (e.g. BookingDtos.cs). Never expose an EF entity directly from a controller.
  2. Service method. If the endpoint does anything beyond a simple CRUD read, add the logic to the matching interface + implementation in Services/ (e.g. IBookingService / BookingService), not directly in the controller.
    • If the new logic reads then writes state that another request could also be writing concurrently, do NOT use a plain read-then-write. Use an atomic conditional UPDATE ... WHERE (see BookingService.CreateBookingAsync) or an EF Core concurrency token, and return a distinguishable "conflict" outcome rather than throwing.
  3. Controller action. Thin method: model-bind the request DTO, call the service, map the result to the response DTO / appropriate status code (Ok / Created / Conflict / NotFound — never a bare 500 for an expected outcome like "lost the race").
  4. Authorization. Add [Authorize] (already on the controller by default) and [Authorize(Roles = Roles.Admin)] on the action if it's an admin-only operation.
  5. Test. Add an xUnit test in BookingSystem.Tests for the happy path and for the conflict/error path. If the endpoint touches shared mutable state (like a booking or slot), add or extend a concurrency test modeled on ConcurrencyTests.cs: fire several requests with Task.WhenAll and assert exactly one wins.
  6. Frontend (optional). If the endpoint needs a UI, add a small function to frontend/app.js following the existing api() helper pattern — no new frontend framework or build step.

Run dotnet build && dotnet test before considering the change done.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/add-a-bookingsystem-api-endpoint-mvda873q/download' --output '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md.part' && mv '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md.part' '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md' && test -s '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/add-booking-endpoint' && cp -R '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q' '.claude/skills/add-booking-endpoint'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q'

openskills read 'add-a-bookingsystem-api-endpoint-mvda873q'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires