Skip to content

AboubacarSow/BookStoreApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

BOOK STORE PROJECT

πŸ“š BookStore API

A RESTful Web API built with ASP.NET Core for managing books and their categories. It supports full CRUD operations, pagination, filtering, sorting, and HATEOAS, with JWT-based authentication and role-based authorization.

πŸš€ Features

  • πŸ“ Comprehensive Logging

Implemented using NLog for detailed, configurable logging.

  • ❌ Global Error Handling

Centralized exception management through a custom middleware ExceptionMiddlewareExtension, with dedicated exception classes per entity.

  • πŸ”„ Automatic Object Mapping

Uses AutoMapper to simplify the mapping between models and DTOs.

  • πŸ”€ Content Negotiation

Supports multiple response formats: JSON, XML, and CSV.

  • βœ… Request Validation

Input validation handled via Action Filters to keep controllers clean.

  • βš™οΈ Asynchronous Codebase

Fully asynchronous programming model for improved scalability and performance.

  • πŸ“¦ Pagination with Metadata

Includes metadata such as total items, page size, and current page in responses.

  • 🎯 Advanced Querying
    • πŸ” Filtering: Narrow down results using query parameters
    • 🧠 Searching: Perform keyword-based searches
    • ↕️ Sorting: Sort results by one or more fields
    • 🧩 Data Shaping: Select only specific fields (implemented on Book entity)
  • πŸ”— HATEOAS (Hypermedia as the Engine of Application State)

Adds navigational links to enhance discoverability and self-documentation of the API.

  • 🧭 HTTP OPTIONS & HEAD Support

Provides clients with supported HTTP methods and resource availability.

  • 🏠 Root Documentation Endpoint

Root-level route offering API metadata and entry points.

  • 🧬 API Versioning

Enables multiple versions of the API to coexist seamlessly.

  • 🧠 Caching Mechanism

Response caching is implemented to optimize performance and reduce server load.

  • 🚦 Rate Limiting (Throttling)

Limits the number of requests per client to prevent abuse and ensure fair usage.

  • πŸ” Authentication & Authorization
  • πŸ‘€ Based on ASP.NET Identity

  • 🧾 JWT-based tokens with Refresh Token support

  • πŸ›‘οΈ Role-based access control

  • πŸ“˜ Interactive Swagger Documentation

Fully integrated with Swagger (OpenAPI) for live API testing and exploration.

  • πŸ§ͺ Postman Testing Collection

Includes a ready-to-use Postman collection for easy testing of all endpoints.

  • πŸ“ File Upload & Download

Supports uploading and downloading files via dedicated endpoints.

πŸ› οΈ Technologies Used

  • 🧱 ASP.NET Core Web API
  • πŸ—ƒοΈ Entity Framework Core
  • πŸ›’οΈ SQL Server
  • πŸ”„ AutoMapper
  • πŸ“˜ Swagger
  • πŸ§ͺ Postman (for testing)
  • 🌐 Proxies
  • 🚦 ASP.NET CORE Rate Limit
  • 🧠 Marvin.Cache.Headers
  • ✏️ JsonPatch -🧾 NewtonsoftJson

Root Documentation:

Root Documentation

BOOK Store Version 1 View

BookStore V1

BOOK Store Version 2 View

BookStore V2

GetAllBooks endpoint : request's Params and Possible Response

All Books Endpoind view

GetAllBooks endpoint: Request's Response with link for self-documentation

All Books Endpoind view with link

GetAllBooks endpoint: Request's Response Header

All Books options Endpoind view

GetBooksOptions endpoint: Request's Response

All Books options Endpoind view

Books Collection on Postman:

Books Collection

Category's Endpoints view:

Category' Endpoint

GetAll Categories endpoint: Reques's params

all category

Downloading Operation File: upload endpoint response

Downloading file

Authentication in Swagger:

Authentication modal

About

This is a web api project based on my training in BTK Akademi Plateforme

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages