Udemy.Building.Asp.Net.Core.Rest.Apis.With.An.Ai.Powered.Workflow.2026.BOOKWARE-IWL
NFO
Title: Udemy.Building.Asp.Net.Core.Rest.Apis.With.An.Ai.Powered.Workflow.2026.BOOKWARE-IWL
Date: 2026-10-31
Published: 2026-10-13
Updated: 2026-10-19
Platform: Udemy
Category: Development > Web Development
Runtime: 23h 20m
Size: 14.91 GiB
Subs: English
Url: https://www.udemy.com/course/building-aspnet-core-rest-apis-with-an-ai-powered-workflow/
Resources: 13 external links
Elegant Code - my YouTube channel: https://www.youtube.com/@ElegantCodeChannel
Using Visual Studio Code for C# Development on Mac & Windows: https://docs.google.com/document/d/1kb2jAtqw-2RV-4FCZo8iHjH_EAU20wt6HvFT0Bk7n-w/edit?tab=t.0
Using Visual Studio Code for C# Development on Mac: https://docs.google.com/document/d/1kb2jAtqw-2RV-4FCZo8iHjH_EAU20wt6HvFT0Bk7n-w
Nullable reference types video: https://youtu.be/-J3NzuNz3jo
"required" keyword video: https://youtu.be/F-RtSgD4BSg
Records video: https://youtu.be/gpIrvdwvjuc
Extension methods video: https://youtu.be/xEFQw2hG3ro
Value types vs Reference types in C#: https://youtu.be/HY4jFcosN_A
Copilot for students: https://docs.github.com/en/copilot/how-tos/copilot-on-github/set-up-copilot/enable-copilot/set-up-for-students
C# attributes explained: https://youtu.be/QerhgjQW0jk
Docker download link: https://www.docker.com/products/docker-desktop/
Installing a package as a Development-Only Dependency: https://docs.google.com/document/d/1T5fVP7qYS4hjThBbfCGSs8zpAwHF2vfsuFl8NyA7-qE/edit?usp=sharing
Extension methods explained: https://youtu.be/xEFQw2hG3ro
Lessons:
01 - Welcome! Basic information & how to get help (1m 26s)
02 - 50 seconds about your instructor (50s)
03 - 108 seconds about what this course is (1m 48s)
04 - 55 seconds about what this course isn't (55s)
05 - AI Tools — what to expect (5m 57s)
06 - 119 seconds about practicing what you learn (1m 59s)
07 - Section introduction (39s)
08 - What are APIs and why do we need them? (5m 53s)
09 - What is ASP.NET Core? (4m 3s)
10 - How web communication works. HTTP (3m 3s)
11 - Web communication in action (4m 29s)
12 - JSON (4m 2s)
13 - Resource vs Endpoint (2m 16s)
14 - Section introduction (1m 27s)
15 - (Windows) Installing Visual Studio Community (2m 17s)
16 - (Windows) Installing Visual Studio Code (3m 9s)
17 - (MacOS) Installing Visual Studio Code (6m 16s)
18 - Section introduction (26s)
19 - [Visual Studio Community] Creating a new ASP.NET Core Web API project (5m 8s)
20 - [Visual Studio Code] Creating a new ASP.NET Core Web API project (5m 53s)
21 - Project structure overview (4m 17s)
22 - Understanding the Program.cs file (4m 7s)
23 - Running the API and sending your first request (6m 34s)
24 - [Visual Studio Community] Debugging with breakpoints (48s)
25 - [Visual Studio Code] Debugging with breakpoints (1m 21s)
26 - Using the Console (2m 47s)
27 - Section introduction (2m 16s)
28 - Introduction to source control (4m 25s)
29 - GitHub fundamentals & account setup (2m 17s)
30 - Initializing a Git repository (Visual Studio Community) (4m 14s)
31 - Initializing a Git repository (Visual Studio Code) (6m 19s)
32 - Using Git from the IDE (5m 59s)
33 - Section introduction (33s)
34 - The API we will build (2m 28s)
35 - Minimal API vs Controllers (5m 40s)
36 - Defining the first entity (5m 53s)
37 - Defining the first endpoint. GET (7m 32s)
38 - Registering the endpoint (9m 23s)
39 - Section introduction (33s)
40 - Calling the API from the IDE. HTTP files (6m 28s)
41 - The importance of endpoint registration (1m 30s)
42 - OpenAPI documentation (3m 3s)
43 - Setting up Scalar (4m 39s)
44 - Using Scalar (2m 34s)
45 - Understanding the launchSettings.json file (5m 4s)
46 - Configuring launch settings (3m 11s)
47 - Section introduction (27s)
48 - REST (8m 52s)
49 - HTTP Response Codes (7m 47s)
50 - HTTP Methods - GET, POST, PUT, PATCH, DELETE (6m 14s)
51 - Method safety and idempotency (4m 28s)
52 - HTTP Methods - HEAD, OPTIONS, TRACE and CONNECT (2m 15s)
53 - HTTP methods best practices (2m 20s)
54 - REST API best practices (7m 35s)
55 - Section introduction (20s)
56 - GET by ID. Route parameter binding (3m 58s)
57 - Route constraints (4m 41s)
58 - Documenting response types with Produces (3m 43s)
59 - Type-safe responses in Minimal APIs (6m 44s)
60 - Model binding (2m 35s)
61 - POST (4m 34s)
62 - The response from POST (6m 12s)
63 - Problem Details (3m 59s)
64 - Updating endpoints to produce Problem Details (6m 36s)
65 - PUT or PATCH? (3m 35s)
66 - PUT (9m 24s)
67 - DELETE (4m 22s)
68 - Section introduction (3m 10s)
69 - Chat GPT & Claude in the browser (5m 48s)
70 - Copilot or Claude Code? What to know before you choose (1m 59s)
71 - Setting up GitHub Copilot in Visual Studio Community (1m 42s)
72 - Setting up GitHub Copilot in Visual Studio Code (2m 5s)
73 - Setting up Claude Code in Visual Studio Code (2m 30s)
74 - GitHub Copilot - a basic tutorial (11m 36s)
75 - Claude Code - a basic tutorial (10m 33s)
76 - Prompting basics for coding tasks (6m 10s)
77 - When to be careful with AI (7m 14s)
78 - Section introduction (45s)
79 - Author entity (1m 29s)
80 - GET (6m 57s)
81 - Understanding ActionResult (5m 16s)
82 - GET by Id (6m 14s)
83 - POST (7m 18s)
84 - PUT (3m 53s)
85 - DELETE (3m 14s)
86 - Minimal APIs vs Controllers - summary (3m 57s)
87 - Section introduction (41s)
88 - Databases (5m 2s)
89 - PostgreSQL (2m 59s)
90 - Installing Docker (3m 41s)
91 - Installing PostgreSQL (2m 34s)
92 - Installing DBeaver (1m 36s)
93 - Connecting DBeaver to our database (2m 20s)
94 - Introduction to Entity Framework Core (5m 35s)
95 - Code first vs Database first (2m 22s)
96 - Entity Framework Core setup (3m 7s)
97 - DbContext (6m 17s)
98 - Appsettings (4m 4s)
99 - Connection strings (3m 33s)
100 - Migrations (5m 5s)
101 - Migration files (4m 7s)
102 - Applying a migration (1m 44s)
103 - Browsing the database in DBeaver (6m 31s)
104 - Troubleshooting migrations and database Issues (4m 29s)
105 - Updating CategoriesEndpoints to use the database (11m 40s)
106 - Updating AuthorsController to use the database (4m 59s)
107 - Why do we use concrete DbContext? (3m 43s)
108 - Dependency Injection in ASP.NET Core (4m 10s)
109 - Service lifetime (4m 44s)
110 - Adding seed data (7m 3s)
111 - Switching to Microsoft SQL Server (6m 53s)
112 - Section introduction (23s)
113 - The need for DTOs (1m 46s)
114 - DTOs (7m 32s)
115 - Introducing DTOs for Categories (4m 20s)
116 - Updating the Categories Endpoints to use DTOs (6m 48s)
117 - One DTO per operation (4m 51s)
118 - Updating the AuthorsController to use DTOs (7m 20s)
119 - Section introduction (25s)
120 - The problem with manual mapping (2m 39s)
121 - Introducing Mapperly (5m 54s)
122 - Using the mapper in AuthorsController (5m 41s)
123 - Mapperly — handling more complex cases (6m 33s)
124 - Using the mapper for Categories (6m 43s)
125 - Section introduction (45s)
126 - The need for validation (2m 44s)
127 - Validation with Data Annotations (10m 17s)
128 - Introduction to FluentValidation (3m 29s)
129 - Validation with FluentValidation (6m 55s)
130 - Validation with FluentValidation - refactoring (4m 13s)
131 - Validation Rules — Data Annotations vs FluentValidation (7m 17s)
132 - Validation and database checks (2m 58s)
133 - FluentValidation in Controllers (6m)
134 - Data Annotations in Minimal APIs (2m 24s)
135 - Section introduction (25s)
136 - Request pipeline and middleware (7m 54s)
137 - Configuring the request pipeline in Program.cs (3m 5s)
138 - HttpContext (3m 46s)
139 - Custom middleware (8m 43s)
140 - Extracting middleware into a class (5m 10s)
141 - Global exception handling (3m 33s)
142 - Custom global exception handler (6m 25s)
143 - Section introduction (26s)
144 - Introduction to endpoint filters and action filters (6m 35s)
145 - The need for endpoint filters (6m)
146 - Custom endpoint filter (6m 10s)
147 - Extracting the endpoint filter into a reusable class (5m 2s)
148 - Custom action filter (8m 33s)
149 - Section introduction (1m 3s)
150 - Relationships in relational databases (3m 48s)
151 - One-to-Many relationships in EF Core (6m 28s)
152 - Many-to-Many relationships in EF Core (3m 43s)
153 - Adding BooksController (7m 33s)
154 - Adding BookMapper (2m 23s)
155 - Including related data in DTOs (6m 3s)
156 - DTO flattening (6m 44s)
157 - Loading related data with Include (6m 19s)
158 - Adding collections to DTOs (4m 16s)
159 - Circular references in DTOs (6m 58s)
160 - Updating related data in EF Core (5m 17s)
161 - Updating available copies when total copies change (5m 18s)
162 - Different DTOs for different endpoints (5m 46s)
163 - Deciding which side owns the relationship (5m 19s)
164 - Preventing deletion of entities with related data (5m 16s)
165 - Configuring Mapperly for related data (4m 52s)
166 - AI code review in practice (8m 35s)
167 - Section introduction (34s)
168 - The need for pagination (3m 47s)
169 - Query parameters and URL segments (3m 33s)
170 - Implementing pagination (5m 47s)
171 - Pagination metadata in response headers (4m 8s)
172 - Reusable pagination parameters (5m 37s)
173 - Breaking changes and API contracts (8m 2s)
174 - Binding sources (4m 19s)
175 - Implementing filtering (8m 50s)
176 - Nested resources and query parameters in MinimalAPIs (10m 51s)
177 - Implementing sorting (10m 40s)
178 - Section introduction (1m 13s)
179 - The need for service layer (7m 3s)
180 - Introducing the first service (7m 1s)
181 - Introducing the result pattern (2m 40s)
182 - The ErrorOr library (9m 10s)
183 - Using ErrorOr in the service (5m 8s)
184 - Handling ErrorOr results in the controller (6m 46s)
185 - Moving GetAll business logic to the service (7m 52s)
186 - Moving GetById and Update business logic to the service (5m 5s)
187 - Moving the Delete business logic to the service (3m 15s)
188 - Refactoring AuthorsController to use service layer (4m 39s)
189 - Section introduction (17s)
190 - Partial updates and the PATCH method (5m 12s)
191 - Implementing PATCH - DTO and mapper (5m 46s)
192 - Implementing PATCH - service layer (4m 56s)
193 - Implementing PATCH - controller (3m 51s)
194 - Validating PATCH values (4m 1s)
195 - Validating PATCH model (3m 41s)
196 - Section introduction (42s)
197 - Introducing the Member entity (7m 54s)
198 - Implementing the Member endpoints (6m 24s)
199 - Soft delete of a member (6m 20s)
200 - Restoring soft-deleted records (3m 22s)
201 - Introducing the Loan entity (6m 59s)
202 - Introducing the LoansController and the Loan DTO (6m 28s)
203 - Implementing GetAll and GetById for Loans (10m 26s)
204 - Implementing the Create endpoint for Loans (10m 20s)
205 - Returning a book (6m 47s)
206 - Testing the Loans endpoints (4m 12s)
207 - Adding loan-related changes to the Members endpoints (7m 52s)
208 - Adding loan-related changes to the Book endpoints (8m 11s)
209 - Section introduction (1m 42s)
210 - Why we need automated tests (5m 40s)
211 - Setting up the test project (3m 47s)
212 - Writing the first integration test (Testing POST for Categories) (9m 49s)
213 - Why tests should not use the real database (3m 11s)
214 - Switching to an in-memory database (4m 17s)
215 - Integration tests vs unit tests (4m 23s)
216 - The need to reset the database before each test (5m 39s)
217 - Testing GET by ID for Categories (4m 5s)
218 - Integration tests refactoring (5m 4s)
219 - Testing GET for Categories (4m 38s)
220 - Testing PUT for Categories (3m 3s)
221 - Refactoring & HttpResponseMessageExtensions (6m 58s)
222 - Testing DELETE for Categories (2m)
223 - Measuring code coverage (3m 15s)
224 - Testing error scenarios - GET (4m 35s)
225 - Testing error scenarios - POST, PUT, DELETE (4m 59s)
226 - Testing across multiple resources (5m 10s)
227 - Introducing TestDataFactory (10m 46s)
228 - Testing validation with integration tests (3m 58s)
229 - Testing validation with unit tests (6m 58s)
230 - Testing getting books by category (12m 43s)
231 - Reviewing integration tests (18m 24s)
232 - Extracting a base class for integration tests (10m 6s)
233 - What's next with testing (1m 52s)
234 - Section introduction (1m 2s)
235 - Appending pagination headers in an extension method (6m 43s)
236 - Extracting patch document validation into a method (3m 8s)
237 - Moving errors into classes for Minimal API endpoints (2m 17s)
238 - Extracting pagination logic into a common method (8m 47s)
239 - Making sorting deterministic (11m 52s)
240 - Refactoring of filtering and sorting (9m 58s)
241 - Section introduction (1m 6s)
242 - The need for authentication and authorization (2m 55s)
243 - Authentication methods overview (5m 2s)
244 - Introduction to ASP.NET Core Identity (2m 28s)
245 - Setting up ASP.NET Core Identity (3m 40s)
246 - Configuring the model with OnModelCreating (3m 45s)
247 - Completing the Identity setup (5m 17s)
248 - ApplicationUser vs Member (4m 57s)
249 - Linking members to user accounts (7m 6s)
250 - Introduction to roles (2m 56s)
251 - Seeding roles (9m 6s)
252 - Creating the user registration DTO (3m 4s)
253 - Implementing the authentication service (7m 15s)
254 - Adding endpoint for user registration (8m 8s)
255 - Ensuring atomicity with transactions (4m 14s)
256 - Removing member creation endpoint (4m 13s)
257 - Fixing the tests (13m 58s)
258 - Section introduction (1m 25s)
259 - Basics of JWT (2m 53s)
260 - Inside a JWT token (7m 37s)
261 - JWT configuration (6m 55s)
262 - Storing secrets safely (3m 55s)
263 - Setting up JWT authentication (6m 31s)
264 - Protecting an endpoint (2m 59s)
265 - The login endpoint (2m 48s)
266 - Verifying credentials (3m 32s)
267 - Generating the JWT token (5m 59s)
268 - Testing the login endpoint (3m 52s)
269 - Returning meaningful errors for unauthenticated requests (3m 38s)
270 - Seeding the first librarian (4m 13s)
271 - Implementing the register librarian logic (5m 30s)
272 - Role-based authorization (5m 42s)
273 - Accessing the current user (4m 28s)
274 - Protecting access to own resources (3m 7s)
275 - Getting started with Postman (6m 25s)
276 - Environments and automatic authorization in Postman (8m 58s)
277 - Practical tips for working with Postman (5m 25s)
278 - Securing all endpoints (8m 35s)
279 - Updating the integration tests — the plan (1m 38s)
280 - Providing JWT key for testing purposes (2m 36s)
281 - Updating existing integration tests to work with authentication (7m 17s)
282 - Speeding up password hashing in tests (3m 3s)
283 - Testing unauthorized access (2m 16s)
284 - Testing forbidden access (3m 53s)
285 - Parameterized authorization tests (5m)
286 - The AuthorizationTests suite (4m 3s)
287 - Testing access to own resources (3m 40s)
Build production-ready APIs with C#, Entity Framework Core & PostgreSQL. Learn AI-assisted
development workflow.
Files
| Path | Size |
|---|---|
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.nfo | 16,49 KB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r00 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r01 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r02 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r03 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r04 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r05 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r06 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r07 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r08 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r09 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r10 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r11 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r12 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r13 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r14 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r15 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r16 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r17 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r18 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r19 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r20 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r21 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r22 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r23 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r24 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r25 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r26 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r27 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r28 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r29 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r30 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r31 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r32 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r33 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r34 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r35 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r36 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r37 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r38 | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.r39 | 11,51 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.rar | 381,47 MB |
| udemy.building.asp.net.core.rest.apis.with.an.ai.powered.workflow.2026.bookware-iwl.sfv | 3,92 KB |