Detta är min implementation av Game Tournament API-projektet för ASP.NET Core-modulen. Detta API gör det möjligt för arrangörer att skapa och hantera spelturneringar samt schemalägga specifika matcher inom dessa turneringar.
Jag byggde detta RESTful Web API med ASP.NET Core och Entity Framework Core med en SQLite-databas. Jag har följt en "Clean-ish"-arkitektur och separerat ansvarsområden i Controllers-, Services- och Data-lager.
- CRUD-operationer: Fullständiga Create-, Read-, Update- och Delete-funktioner för både Tournaments och Games.
- Datamodeller och relationer:
Tournament: Har en titel, beskrivning, max antal spelare och datum.Game: Har en titel, tid och tillhör enTournament(en-till-många-relation).
- DTO-mönster: Använde Data Transfer Objects (
Create,Update,Response) för att frikoppla de interna databasmodellerna från API-kontrakten. - Validering: Lade till strikta valideringsregler med hjälp av Data Annotations (t.ex. minsta stränglängd) och ett anpassat
FutureDateAttributeför att säkerställa att datum inte sätts i dåtid. - Integration av service-lager: All affärslogik och databasåtkomst är inkapslad i
ITournamentServiceochIGameService. - Sökfunktion:
GET /api/tournaments-endpointen accepterar en valfri?search=query-parameter för att filtrera turneringar via titel. - JWT-säkerhet: Implementerade JWT-autentisering för skydd av känsliga endpoints.
Med mått av 1–5 ⭐ i komplexitet (hur svåra de är):
DELETE-endpoints är skyddade med JWT-autentisering och kräver en giltig Bearer-token för åtkomst.
Lade till funktionalitet för seed data där startdata automatiskt läggs till i databasen med hjälp av EF Core när Web API:t startar.
Implementerade Rate Limiting för att skydda API:t mot spam genom att använda:
using System.Threading.RateLimiting;Detta begränsar klienter till ett visst antal förfrågningar under en given tidsperiod.
Lade till en PATCH-endpoint för uppdatering av delar av en entity (till skillnad från PUT som uppdaterar hela entities). Detta blir något mer komplext om man implementerar en separat DTO för partiella uppdateringar.
git clone https://github.com/Mahamed-2/Game-Tournament-API-Project.git
cd Game-Tournament-API-Project/TournamentApidotnet restore
dotnet builddotnet runNär applikationen körs kan du navigera till:
http://localhost:<port>/swagger
i din webbläsare för att interagera med API-endpoints via Swagger UI.
För att testa de skyddade DELETE-endpointsen kan du hämta en JWT-token från POST /api/auth/login-endpointen med följande hårdkodade testuppgifter:
- Användarnamn:
M2 - Lösenord:
bestteachers
Klistra in den returnerade token i knappen Authorize högst upp i Swagger UI med formatet:
Bearer <your_token>