Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
30 posts found
Introduction to Web APIs with .NET 9: REST principles and why .NET?
Backend PART 01

Introduction to Web APIs with .NET 9: REST principles and why .NET?

The first article of the .NET 9 Web API series. We cover REST principles, resource-oriented thinking, HTTP methods, and why we chose .NET 9, in a plain, example-driven style.

5 Jul 2026 9 min 206
Setting up the initial project: project structure, Program.cs, and a minimal hosting model.
Backend PART 02

Setting up the initial project: project structure, Program.cs, and a minimal hosting model.

We set up our first .NET 9 Web API project. We break down Program.cs line by line, and understand the minimal hosting model, the builder-versus-app split, and why middleware order matters.

5 Jul 2026 11 min 151
Controllers or Minimal APIs? When to Choose Which
Backend PART 03

Controllers or Minimal APIs? When to Choose Which

We compare two ways of writing endpoints in .NET 9: controller-based structure and Minimal APIs. When each makes sense and what the real difference is, made clear with examples.

25 Jul 2026 10 min 129
Writing Your First Controller: Routing, Attributes and Action Methods
Backend PART 04

Writing Your First Controller: Routing, Attributes and Action Methods

We write our first real controller. How routing works, what attributes do, how action methods are built, and how an incoming request reaches the right method, step by step.

25 Jul 2026 11 min 92
HTTP Status Codes and Returning the Right Response: IActionResult and Results
Backend PART 05

HTTP Status Codes and Returning the Right Response: IActionResult and Results

We cover HTTP status codes and the ways to return the right response. Which code for which situation, the difference between IActionResult and Results, and small details that help API consumers.

25 Jul 2026 11 min 55
Model Binding: Binding Request Data to Your Method (Route, Query, Body, Header)
Backend PART 06

Model Binding: Binding Request Data to Your Method (Route, Query, Body, Header)

We cover how .NET automatically binds request data to your method parameters: reading from the route, query string, body and headers, attributes like [FromBody], and common mistakes.

26 Jul 2026 11 min 78
What Is a DTO and Why Shouldn't We Return the Entity Directly?
Backend PART 07

What Is a DTO and Why Shouldn't We Return the Entity Directly?

We cover what DTOs are and why you shouldn't return database objects directly: the concrete benefits of using DTOs for security, privacy, flexibility, and contract stability.

2 Aug 2026 11 min 100
Model Validation: Validating Incoming Data with Data Annotations and FluentValidation
Backend PART 08

Model Validation: Validating Incoming Data with Data Annotations and FluentValidation

We cover validating incoming data: defining quick rules with Data Annotations, the automatic validation of [ApiController], and FluentValidation for complex rules. What to choose and when?

2 Aug 2026 12 min 79
Introduction to Entity Framework Core: DbContext and Your First Migration
Backend PART 09

Introduction to Entity Framework Core: DbContext and Your First Migration

We start storing our data in a real database. What EF Core is, what DbContext represents, how tables are defined with DbSet, and how the database is created with the first migration, step by step.

2 Aug 2026 13 min 112
Is the Repository Pattern Really Necessary? Let's Talk About the Service Layer
Backend PART 10

Is the Repository Pattern Really Necessary? Let's Talk About the Service Layer

We discuss placing a layer between the controller and DbContext instead of using it directly. What the service layer is for, whether the repository pattern is really necessary, and when it pays off.

2 Aug 2026 13 min 89
DTO-Entity Conversion: Writing It by Hand or Using AutoMapper?
Backend PART 11

DTO-Entity Conversion: Writing It by Hand or Using AutoMapper?

We discuss the conversion between entity and DTO. The upsides of manual mapping, when AutoMapper is a convenience and when a hidden cost, and a practical look at which to choose in your project.

8 Aug 2026 12 min 70
Dependency Injection in Depth: Singleton, Scoped and Transient Lifetimes
Backend PART 12

Dependency Injection in Depth: Singleton, Scoped and Transient Lifetimes

We cover the lifetime concept at the heart of dependency injection. The difference between singleton, scoped and transient, when to use each, and the subtle bugs a wrong choice causes.

8 Aug 2026 13 min 107
Blog Map