Skip to content

lady-logic/BookStoreProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š BookStoreApi

Ein einfaches ASP.NET Core Web API Projekt zum Verwalten von BΓΌchern – mit dem Hauptfokus auf dem VerstΓ€ndnis und der Anwendung von C#-Attributen.

🎯 Ziel des Projekts

Dieses Projekt dient Lernzwecken. Es zeigt, wie man:

  • eigene Attribute in C# erstellt (z.β€―B. CustomRoleAttribute)
  • Filter wie ActionFilter und AuthorizationFilter verwendet
  • JWT-Authentifizierung integriert
  • Attribute sinnvoll in einem ASP.NET Core Controller nutzt

πŸš€ Features

  • πŸ’˜ CRUD-API fΓΌr BΓΌcher (BooksController)
  • πŸ” Login via AccountController mit JWT Token
  • πŸ›‘οΈ Benutzerdefinierte Rollen-Absicherung mit dem [CustomRole("Admin")]-Attribut
  • πŸ§ͺ Action Logging mit [LogActionFilter]
  • 🧾 OpenAPI (Swagger) Dokumentation

🧠 Lerninhalte

Thema Beschreibung
CustomRoleAttribute PrΓΌft, ob ein Benutzer eine bestimmte Rolle besitzt
LogActionFilter Ein ActionFilter, der alle Requests in der Konsole loggt
Authorize, AllowAnonymous Standard-Attribute von ASP.NET zur Zugriffskontrolle
Swagger Support Erlaubt das Testen geschΓΌtzter Endpunkte durch manuelles EinfΓΌgen des Tokens

πŸ”§ Projektstruktur

BookStoreProject/
β”‚
β”œβ”€β”€ BookStoreApi/                 β†’ Haupt-API-Projekt
β”‚   β”œβ”€β”€ Controllers/              β†’ API-Controller fΓΌr BΓΌcher und Kategorien
β”‚   β”œβ”€β”€ Models/                   β†’ EntitΓ€ten und DTOs
β”‚   β”œβ”€β”€ Attributes/               β†’ Eigene C#-Attribute
β”‚   β”œβ”€β”€ Filters/                  β†’ Action- und Authorization-Filter
β”‚   β”œβ”€β”€ Middleware/               β†’ Middleware-Komponenten
β”‚   β”œβ”€β”€ Program.cs                β†’ Einstiegspunkt
β”‚   └── appsettings.json          β†’ Konfiguration
β”‚
└── BookStoreApiTests/            β†’ Testprojekt
    └── Integrationstests

πŸ”‘ Authentifizierung (JWT)

Login:

POST /api/account/login

{
  "email": "[email protected]",
  "password": "password"
}

Ergebnis:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6..."
}

➑️ Kopiere den Token und klicke in Swagger auf "Authorize" β†’ fΓΌge den Token mit Bearer PrΓ€fix ein.

🐳 Docker Support

docker build -t bookstoreapi .
docker run -p 8080:8080 bookstoreapi

πŸ“š Anforderungen

  • .NET 8 SDK
  • JetBrains Rider oder Visual Studio
  • Optional: Docker

πŸ‘©β€πŸ’» Entwickelt von

@lady-logic

About

ASP.NET Core Web API for book management with integration tests

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published