SETTING THE STAGE "We need a new SPA "We need a new REST API
3
ZERO TO "MAKE MAGIC HAPPEN"
4
THE EMPLOYEE OBJECT • Is part of payroll software • Contains sensitive data (SSN)
5
A WILD EmployeesController APPEARED
6
The reality SCAFFOLDING IS A LIE
7
Route the request Validate Run service for request Return data
8
NO SEPARATION OF CONCERNS
9
CONTROLLER SHOULD ONLY Route the request Return data
10
CQRS Command Query Responsibility Segregation
11
Problem? ENTITY BEING USED FOR REQUESTS MODEL/MODEL VALIDATION ARE NOT SEPARATE
12
SEPARATE ENTITY FROM MODEL So let's refactor
13
SEPARATE VALIDATION FROM MODEL INTRODUCING FLUENT VALIDATION
14
ISOLATE VALIDATION FUNCTIONALITY
15
SEPARATE REQUEST HANDLER FROM CONTROLLER INTRODUCING MEDIATR
16
PUTTING IT ALL TOGETHER 1. Dependency injection handles... dependencies 2. Mediat will handle request/responses 3. Controller will route HTTP requests
17
USE BETTER DI CONTAINER INTRODUCING AUTOFAC
18
USE AUTOFAC TO • Scan assemblies for services/validators • Add them to service pipeline
19
TIPS
20
CREATE REPEATABLE PATTERNS more complete example
21
WRITE TESTS FOR EVERYTHING
22
KEEP VERSIONS SEPARATE
23
CONCERNS May be unnecessary complexity • Bigger learning curve
Description:
Explore an opinionated and maintainable REST API architecture for ASP.NET Core in this conference talk. Learn how to create scalable APIs that avoid common pitfalls of scaffolding and poor separation of concerns. Discover techniques for dependency injection, request validation, service execution, error handling, and versioning strategies. Gain insights into implementing CQRS, separating entities from models, using Fluent Validation, and leveraging MediatR for request handling. Understand the benefits of using Autofac for dependency injection and creating repeatable patterns. Get tips on writing comprehensive tests and keeping API versions separate to ensure long-term maintainability and scalability of your ASP.NET Core-powered RESTful APIs.
An Opinionated, Maintainable REST API Architecture for ASP.NET Core