Introduction
NestJS Overview
- What is NestJS?
- NestJS features
Preparing the Development Environment
- Installing and configuring NestJS
CRUD
- Creating, defining, and deleting tasks
Handling in NestJS
- Using NestJS pipelines
- Creating a custom pipe
- Handling errors
Data Persistence
- Setting up PostgresSQL and Pgadmin
- Creating a database
- Connecting to a database
Authentication and Authorization
Testing the Application
- Testing with unit tests and mock tests
Debugging the Application
Deploying the Application
- Deploying with Elastic Beanstalk
Securing the Application
Troubleshooting
Summary and Conclusion
Introduction
The Fundamentals of APIs and Their Functionality
- Scalar types
- Web architecture patterns
REST Overview
- Get option
- Pull option
- Post option
- Delete option
Preparing the Development Environment
- Installing and configuring LoopBack
Models and Data Sources
- Creating and testing a model
- Connecting to data sources
Authentication
- Authenticating endpoints
- Creating a public route
- Using ACL
- Adding login
Security
- Locking down REST web services
Summary and Conclusion
Introduction
Node.js Concepts
- RAM vs I/O latency
- Blocking vs. non-blocking
- Syntax and logic
The Fundamentals of APIs and Their Functionality
- Scalar types
- Web Architecture Patterns: the composite pattern, proxy pattern, and facade pattern
REST Overview
- Get option
- Pull option
- Post option
- Delete option
Preparing the Development Environment
- Installing and configuring Node.js
- Installing and configuring Express.js
- Installing and configuring MongoDB
- Testing the installations
Node Modules and Package Manager
- Creating a module
- Loading a module
- Using module functions
- Creating event arguments
- Extending event emitters
- Installing a Node package
- Using a package
- Listing packages
- Updating packages
- Uninstalling packages
- Publishing packages
Working with Express.js
- Creating custom middleware
- Using Express router
- Filtering paths
REST and GraphQL API
- Building a web server
- Handling routes
- Parsing HTTP requests
- Calling endpoints
- Defining schema
- Adding input validation
- Managing mutations
- Adding variables
- Handling errors
CRUD Operations Using MongoDB
- Saving documents
- Querying documents
- Updating documents
- Deleting documents
Authentication and Security
- Creating and registering users
- Generating tokens
- Storing in environment variables
- Protecting routes
- Testing the authorization
Troubleshooting
- Writing a unit test
- Writing an integration test
- Wiring a unit and integration test
Summary and Conclusion
Introduction
- Overview of Blazor WebAssembly
Getting Started
- Creating an ASP.NET core hosted Blazor WebAssembly project
- Initializing Git repository
Forms and Authentication
- User login form and validation
- User registration model
- Logging objects to the console
- Using radio buttons
- Navigating the user with NavigationManager
- AuthenticationStateProvider
- Page restrictions
- LocalStorage for authentication
- Adding a logout option
- Cleaning up the navigation and adding a Favlcon
Web API and Entity Framework
- Understanding the Model-View-Controller (MVC) pattern
- Adding the UnitController
- Receiving units from the Web API
- Understanding HTTP methods
- Installing and using Entity Framework (EF)
- Implementing DataContext
- Viewing the database
- Adding, updating, and removing a unit
.NET Core
- Overview of .NET Core
- Razor component
- Component communication
- .NET forms and authentication
- .NET Web API and EF
- Authentication with JSON Web Token (JWT)
- UserUnits
Publishing and Deploying
- Deploying web application on a Windows Server
- Publishing and deploying an app with Visual Studio
Summary and Next Steps
Introduction
- Overview of JWT structure
- JWT common use cases
JWT Validation
- Symmetric token signature
- Asymmetric token signature
- Validating tokens
- Validating claims
Stolen JWTs
- Dealing with stolen JWTs
- JWT storage
- Invalidating JWTs
Managing a Cryptographic Key
- Overview of secret keys
- Embedding the public key
- Embedding a URL containing the key
Hacking JWTs
- Brute force approach
- Modifying the algorithm RS256 to HS256
- None algorithm approach
Summary and Next Steps