A .NET 7 Web API project that provides endpoints to manage Doctor Who related data, such as doctors, episodes, authors, companions, and enemies.
- Description
- Required Knowledge
- Prerequisites
- Getting Started
- APIs
- Project Structure
- Technologies and Libraries
- Author
- License
This project is a .NET 7 Web API application that serves as a backend for managing Doctor Who related data. It supports CRUD operations for doctors, episodes, and authors, as well as adding companions and enemies to episodes. The application is built using Entity Framework Core for data access, AutoMapper for object mapping, and FluentValidation for input validation.
To work on this project, it is recommended to have familiarity with the following technologies:
- C#
- .NET Core
- ASP.NET Core Web API
- Entity Framework Core
- AutoMapper
- FluentValidation
- Git
- .NET 7 SDK
- SQL Server
- Clone the repository
git clone https://github.com/OthmanMohammad/Doctor-Who-Web-APIs.git
- Navigate to the project directory
cd DoctorWho
- Restore the required packages
dotnet restore
- Build the solution
dotnet build
- Run the
DoctorWho.Web
project
cd DoctorWho.Web
dotnet run
GET /api/doctors
- Fetches all doctors.POST /api/doctors
- Upserts a doctor and returns the upserted entity.DELETE /api/doctors/{id}
- Deletes a doctor by ID.
GET /api/episodes
- Fetches all episodes.POST /api/episodes
- Creates an episode and returns the new entity ID.POST /api/episodes/{id}/enemies
- Adds an enemy to an episode.POST /api/episodes/{id}/companions
- Adds a companion to an episode.
PUT /api/authors/{id}
- Updates an author by ID.
GET /api/companions
- Fetches all companions.
GET /api/enemies
- Fetches all enemies.
DoctorWho.Web
- Web API project that exposes the endpoints and handles requests.DoctorWho.Db
- Data access layer with Entity Framework Core and repositories.DoctorWho.Domain
- Domain models representing the Doctor Who entities.
- .NET 7 Web API
- Entity Framework Core
- AutoMapper
- FluentValidation
This project was developed by Mohammad Othman.
This project is licensed under the MIT License - see the LICENSE file for details.