Building REST APIs, the way billion dollar companies do
A message from Nick:
"I've spent the last 6 years of my life building scalable REST API microservices in .NET for some of the biggest companies in the world. I know what works and I know what doesn't work. This course is based on real world experience that no documentation website can teach."
In this course you will learn how to build REST APIs, the right way, using all the basic and advanced features of ASP.NET Core. You will learn the REST architecture, learn how to adapt the theory and implement RESTful APIs and then learn even how to create API SDKs for your consumers and even how you an migrate from Controller-based ASP.NET Core APIs to Minimal APIs.
The architecture of the project is intentionally generic so you can leave it as it is and use it or, very easily, adapt it to Clean Architecture, DDD, Vertical Slices or any other architecture you prefer to use.
Curriculum
- What is REST? (1:07)
- The 6 constraints of REST (5:32)
- Resource naming and routing (2:09)
- HTTP Verbs are meaningful (2:05)
- Using response codes to indicate status (2:26)
- Flexible response body options (0:59)
- Understanding Idempotency (1:40)
- Using hypermedia for connectedness (1:44)
- The different types of errors (1:28)
- Section recap (0:53)
- The system we will build an API for (2:17)
- Creating the projects (2:27)
- Defining the movie API contracts (3:28)
- Creating a temporary database (6:23)
- Creating the movies controller (1:03)
- Implementing movie creation (4:26)
- Introducing mapping (2:04)
- Keeping track of the endpoints (2:17)
- Implementing movie retrieval (4:35)
- Perfecting the movie creation endpoint (1:37)
- Implementing movie update (2:52)
- Implementing movie deletion (1:32)
- Why partial updates are not used (1:24)
- Section recap (0:36)
- Filtering (8:07)
- Sorting (6:35)
- Pagination (9:19)
- HATEOAS (5:12)
- Basic versioning (5:06)
- Advanced versioning (5:56)
- What is Swagger? (3:58)
- Integrating versioning in Swagger (3:37)
- Integrating auth in Swagger (2:00)
- Extending Swagger documentation (2:28)
- Adding health checks (4:54)
- Implementing Response caching (5:22)
- Implementing Output caching (6:11)
- Implementing API-key based auth (4:19)
- Implementing multiple auth (4:34)
- Section recap (0:57)
- Why create an SDK? (1:13)
- Creating the SDK project and the client example (2:03)
- Introducing Refit (2:40)
- Retrieving movies (2:00)
- Using the HttpClientFactory (1:44)
- Adding authentication (1:41)
- Handling token generation and refreshing (4:34)
- Adding the remaining requests (2:23)
- Section recap (0:39)
- What are Minimal APIs? (1:49)
- Creating the new endpoint structure (2:31)
- Migrating movie retrieval (3:17)
- Migrating movie creation (3:08)
- Migrating movie listing (3:10)
- Migrating movie update (1:11)
- Migrating movie deletion (1:54)
- Migrating rating endpoints (0:37)
- Migrating Auth (1:25)
- Updating Swagger (3:42)
- Updating versioning (3:36)
- Updating output cache (1:03)
- Section recap (0:34)