掌握使用 Angular 和 C# ASP NET 进行全栈 Web 开发
- 1 - Welcome
- 1 - What you will learn
- 2 - Day 1 Typescript Basics
- 3 - SPA explanation
- 4 - Exploring the template
- 5 - Typescript Part 1
- 6 - Typescript Part 2
- 7 - Typescript Part 3
- 3 - Day 2 Data Binding
- 10 - Intro
- 11 - Data binding
- 12 - Summary
- 4 - Day 3 Basic Routing
- 14 - Intro
- 15 - Exploring Routes in a Project
- 16 - Creating and Routing a Custom Component
- 5 - Day 4 Visualizing a List in a Component
- 18 - Presentation NPM packages
- 19 - Install npm package fontawesome and reference it
- 20 - Angularjson explanation
- 21 - Showing some airline names
- 22 - Building search flights html form
- 23 - Presentation Interfaces
- 24 - Creating interfaces
- 25 - Styling FlightSearch Page
- 6 - Day 5 Getting Lists from Web API
- 27 - Short API Intro
- 28 - JSON EXPLAINATION
- 29 - Search Flight Endpoint
- 30 - Flight data as records
- 31 - Setting up Swagger and OpenAPI
- 7 - Day 6 Downloading Data from Web API using Angular
- 33 - Angular OpenAPI Gen Presentation
- 34 - Installing and configuring ngopenapigen
- 35 - Auto create client API
- 36 - Implement client API to show flight data
- 37 - Error handling
- 38 - Changing swagger operation names
- 8 - Day 7 Parameterizing Angular Routes
- 40 - Lifecycle hooks
- 41 - Adding bookflight component
- 42 - Routing from searchflight to bookflight
- 43 - Router Parameters Presentation
- 44 - Sending flightId Parameter
- 45 - Find Flight Endpoint RestFUL API
- 46 - Testing the new Find Flight Endpoint in Swagger
- 9 - Day 8 Documenting HTTP Response Codes
- 48 - Presentation Http Status Codes
- 49 - Attribute for returning responses
- 50 - More response attributes
- 51 - Display Book Flight Template
- 52 - Handling errors
- 53 - Navigating the user using router service
- 54 - Addition to arrow functions
- 10 - Day 9 Posting Data
- 56 - HTTP Post Presentation
- 57 - Create RegisterPassenger component
- 58 - Register Form Markup
- 59 - Passenger Controller and DTO
- 60 - Implementing the form reactive form binding
- 61 - Posting the register form to the server
- 62 - Receiving the register call
- 63 - Find Passenger Action
- 11 - Days 10 Using Angular Services Part 1
- 65 - Angular Service Presentation
- 66 - Auth Service erstellen
- 67 - Handling existing User
- 68 - Refactoring the login method
- 69 - Redirecting the user to registration
- 12 - Days 11 Using Angular Services Part 2
- 71 - Book Flight Form
- 72 - Book DTO and Controller Book Post Endpoint
- 73 - Posting the Book Flight
- 74 - Service Provider Scopes
- 75 - My Bookings Component implementation
- 76 - Styling Header and Footer
- 13 - Day 12 Input Validation
- 78 - Adding Data Annotation for Validation to BookDto
- 79 - Validation for NewPassengerDTO
- 80 - User Feedback Loop
- 81 - Adding Validator to Angular
- 82 - Displaying different error messages
- 83 - Dirty and Touched
- 84 - Validation for passenger registration
- 14 - Day 13 Entities
- 86 - Domain Explanation
- 87 - Adding Entities
- 88 - Replace RMs with Entities
- 89 - Return FlightRm instead of Entity
- 90 - Replace BookDto with Entity
- 91 - Replace NewPassengerDto with Passenger Entity
- 15 - Day 14 Domain Rule Validation
- 93 - Domain Rule Validation
- 94 - Avoid overbooking a flight
- 95 - Alert 409 Error in Angular
- 96 - Remove FlightId from Booking Entity
- 97 - Refactor flight booking controller code
- 16 - Day 15 Centralizing Data Store
- 98 - Entities class
- 99 - Creating Entities class and placing static lists inside
- 100 - Create Entities object in controllers
- 101 - Injecting the Entities Singleton
- 102 - Seeding data in program cs
- 17 - Day 16 Entity Framework
- 104 - Using EF InMemory Database
- 105 - Using EF Core Error Handling
- 106 - Model Building EF Core
- 107 - D16 4 Final words about EF Core
- 18 - Day 17 Concurrency Conflicts
- 109 - Race Conditions Concurrency
- 110 - Concurrency Token
- 111 - Handle DbUpdateConcurrencyException
- 19 - Day 18 Transforming Collections
- 113 - Layout MyBookings
- 114 - Collection transformation
- 115 - Get Booking List Endpoint
- 116 - Show MyBookings in Angular
- 117 - MyBookings redirect login
- 118 - Cancel Booking Backend
- 119 - Cancel Booking Frontend
- 120 - Switch Passenger Link
- 20 - Day 19 Route Guards
- 122 - Route Guards
- 123 - Implement Route Guards
- 124 - Reuse Route Guards
- 125 - AutoRedirect to requested url after login
- 21 - Day 20 EF SQL Provider
- 126 - Installing SQL Server package and using it
- 127 - Explanation ConnectionString
- 128 - Implement Connectionstring
- 129 - Service Lifetime
- 130 - Create user and connect to database
- 131 - Only seed data once
- 132 - Add Bookings to SQL Mapping
- 133 - Use AppSettings to read ConnectionString
- 22 - Day 21 Filtering Data
- 135 - Intro
- 136 - Search form binding
- 137 - FlightSearchParameters
- 138 - Query String Presentation
- 139 - Using Query String
- 140 - Filtering for destination
- 141 - Applying other filters
- 142 - Final Words
- 23 - BONUS 1 Test Driven Development Unit Testing
- 144 - Introduction
- 145 - What is TDD
- 146 - Create project and write first test method
- 147 - Refactoring and adding domain project
- 148 - Adding Web API project
- 149 - Test first approach
- 150 - Assertion Message
- 151 - Fluent Assertions
- 152 - Test Conditions and Prerequisites
- 153 - Setting up flight project
- 154 - Translating a scenario to test
- 155 - Red green refactor
- 156 - Given when then pattern and avoid overbooking scenario discovery
- 157 - Avoid overbooking scenario
- 158 - Test trustworthiness and devils advocate
- 159 - Practical devils advocate for remaining number of seats
- 160 - Parameterized tests
- 161 - Discovering new scenarios by checking if the production code is complete
- 162 - Refactor remember bookings
- 163 - Laws of TDD
- 164 - Scenario cancel bookings using TDD laws
- 165 - Handle cancel booking no booking found
- 166 - How you discover new scenarios
- 167 - Application layer testing