Library

Course: Build Reactive RESTFUL APIs using Spring Boot/WebFlux

Build Reactive RESTFUL APIs using Spring Boot/WebFlux

  • Life Time Access
  • Certificate on Completion
  • Access on Android and iOS App
  • Self-Paced
About this Course

This course is structured to give you both the theoretical and coding aspect of Reactive Programming and Reactive RestFul APIs using Spring WebFlux.

If you are looking forward to learn the below listed things:

  • What is Reactive Programming ?
  • Write Reactive Programming code with Spring WebFlux
  • Write Reactive Programming code with DB
  • Building Reactive RestFul APIs with Spring WebFlux

Then this is the right course for you. This is a pure hands on oriented course where you will be writing lots of code.

By the end of this course you will have the complete understanding of coding and implementing a Reactive API using Spring WebFlux.

Why Reactive Programming ?

  • This section highlights about the need for reactive programming and explains in detail about the current execution model in spring-mvc
  • This sections explains about the drawbacks in spring-mvc
  • This section explains about the concurrency model in spring-mvc

What is Reactive Programming?

  • This section talks about "What is Reactive Programming ?"
  • How Reactive programming works in a nutshell using a simple example
  • This section will give you all an introduction to Reactive Streams Specification
  • This section will give all an introduction to "Reactive Libraries" that are out there

Getting started with Project Reactor

  • This section will give you all the fundamentals of Project Reactor and explore the project reactor using some examples
  • This section covers the Reactive Types Flux and Mono in detail

Setting up the Project for this course

  • In this section we will set up the project for this course using the Spring Intializr website

Reactive Programming (Flux and Mono) - Hands on + Junit Testing

  • In this section we will explore about how Flux and Mono works via code
  • We will do live coding on how to write Junit test cases using Flux and Mono
  • We will explore lot of different operators in Flux and Mono

Build the first Non Blocking RESTFUL API using Annotated Controllers - Hands On

  • In this section we will build the first non blocking API using the annotated controllers
  • This section covers the fundamentals of how the reactive API works
  • This sections also covers the coding aspect of how to return a Flux/Mono from an end point
  • This section also covers how to write JUNIT test cases using WebTestClient

Build Non Blocking RESTFUL API using Functional Web - Hands On

  • In this section we will build the non blocking API using the Functional Web Module
  • This sections explains about the RouterFunction and HandlerFunction which forms the foundation for Function Web Module
  • This section also covers how to write JUNIT test cases using WebTestClient

Spring WebFlux & Netty - Execution Model

  • This section explains about the different layers behind WebFlux to serve a HTTP Request/Response.
  • This sections covers the concepts of NETTY such as Channel, EventLoop and some of the technical aspects of Netty

Overview of the Reactive API

  • This section will give you an Overview of the Reactive API that we are going to build as part of this course

Reactive Programming in Databases - MongoDB - Hands On

  • In this section we will learn about how to write the reactive programming code with MongoDB
  • Define the Item Document for the project
  • This section covers about how to configure different profiles in Spring Boot
  • In this section we will set up the ItemReactive Mongo DB adapter
  • This section also covers how to write JUNIT test cases for the reactive repository

Build the Item Reactive API Endpoint - Using RestController

  • In this section we will learn about how to code the Item CRUD Reactive API using the @RestController approach
  • This section also covers how to write automated tests using JUNIT and the non blocking test client WebTestClient

Build the Item Reactive API Endpoint - Using Functional Web

  • In this section we will learn about how to code the Item CRUD Reactive API using the Functional Web approach
  • This section also covers how to write automated tests using JUNIT and the non blocking test client WebTestClient

Build Non Blocking Client using WebClient

  • In this section we will explore the techniques to interact with Reactive API using the WebClient
  • Learn the techniques to Invoke the Reactive API using exchange() and retrieve() methods
  • We will explore the GET, PUT, POST and DELETE operations using the WebClient.

Handling Exceptions in WebFlux - RestController

  • In this section we will code and explore different approaches to handle the exceptions/errors that occurs in the reactive api that’s built using RestController
  • Handle exceptions using @ExceptionHandler and @ControllerAdvice
  • This section also covers how to write JUNIT test cases for the Exception scenarios

Handling Exceptions in WebFlux - Functional Web

  • In this section we will code and explore different approaches to handle the exceptions/errors that occurs in the reactive api that’s built using Functional Web
  • Handle exceptions using WebExceptionHandler
  • This section also covers how to write JUNIT test cases for the Exception scenarios

WebClient - Exception Handling

  • In this section we will code and explore how to handle the exceptions using the WebClient
  • Learn the techniques to handle the exceptions using exchange() and retrieve() methods

Streaming Real Time Data using WebFlux - Server Side Events (SSE)

  • In this section we will code and learn about build an endpoint for Streaming RealTime Data using Mongo DB and Spring WebFlux
  • This section covers about the Tailable Cursors and Capped Collections in Mongo DB
  • Build a Non Blocking Streaming Endpoint and interact with the Mongo DB using the @Tailable annotation
  • Learn to write Automated Tests using JUNIT for the Streaming Endpoints (SSE)
Basic knowledge
  • At least JDK 8
  • Any one of the IDE like IntelliJ, Eclipse, etc
  • Spring Boot Knowledge is a must to make the most out of this course
What you will learn
  • What problems Reactive Programming is trying to solve ?
  • What is Reactive Programming?
  • Reactive Programming using Project Reactor
  • Learn to Write Reactive programming code with DB
  • Learn to Write Reactive Programming with Spring
  • Build a Reactive API from Scratch
  • Learn to build Non-Blocking clients using WebClient
  • Write end to end Automated test cases using JUNIT for the Reactive API
Curriculum
Number of Lectures: 85
Total Duration: 09:40:50
Getting Started
  • Course Introduction  

    In this video I will give you all quick introduction to the course, author and what's covered in this course.

  • Course Prerequisites  

    In this tutorial I will request the prerequisites that are needed to make the most of this course.

Why Reactive Programming ?
  • Why Reactive Programming ?  

    In this tutorial we will talk about Why Reactive programming is needed and talk about the concerns that we have in todays Rest API development?

  • Traditional Rest API Design - How it works ?  

    In this tutorial we will learn about the current design of restful apis and discuss the concerns with the current design. 

Introduction to ReactiveProgramming
  • What is Reactive Programming ?  

    In this tutorial I will explain the concepts that form the foundation of reactive programming.

  • Reactive Streams Specification  

    In this tutorial I will explain about what is reactive stream specification and which proivides the standard for reactive programming.

  • Reactive Libraries  

    In this tutorial I will cover the reactive libraries out there and the reactive library that we are going to use for this course.

Getting started with Project Reactor
  • Introduction to Project Reactor  

    In this tutorial I will give you a quick introduction to Project Reactor and the different modules that are available in Project Reactor.

  • Reactor Types - Flux and Mono  

    In this tutorial I will cover the reactive types Flux and Mono and its internals.

Setting up the Project for this course
  • Project SetUp  

    In this tutorial we will set up the project in IntelliJ which will be used for this whole course.

Reactive Programming (Flux and Mono) - Hands on + Junit Testing
  • Flux - How it works ?  

    In this tutorial we will learn about how Flux/Mono works at its core and demystifying the internals of it.

  • Flux - Learn to write Junit Tests  

    In this tutorial we will learn about how to write Junits for the Flux reactive type.

  • Mono - How it works and write Junit Tests  

    In this tutorial we will learn about how to write Junits for the Mono reactive type.

  • Flux/Mono - Exploring Factory methods  

    In this tutorial we will learn about how to create flux/mono using some of the other factory methods that are part of the project reactor.

  • Filtering a Reactive Stream  

    In this tutorial we will learn about how to filter the elements using the Flux.

  • Transforming a Reactive Stream - map  

    In this tutorial we will learn about how to transform a flux using the map() method.

  • Transforming a Reactive Stream - flatMap  

    In this tutorial we will learn about how to transform a flux using the flatmap() method.

  • Combining Reactive Stream  

    In this tutorial we will learn about how to combine reactive streams using merge , concat and zip operators.

  • Handling Errors in a Reactive Stream  

    In this tutorial we will learn about how to handle the error that happened in a reactive sequence.

  • Infinite Reactive Stream  

    In this tutorial we will learn about how to create an infinite reactive sequence and how to write test cases for an infinite sequence.

  • Converting Reactive Sequences to Non-Reactive sequences  

    In this tutorial we will learn about how to convert a reactive sequence to a non reactive sequence.

  • Back Pressure - How it works ?  

    In this tutorial we will learn about backpressure and how this can be implemented using project reactor.

  • Project Reactor - Push/Pull Communication Model  

    In this tutorial we will learn about interaction model between publisher and subscriber in the reactive programming world.

  • Hot vs Cold Reactive Streams  

    In this tutorial we will learn about the hot and cold reactive streams using project reactor.

  • Virtualizing Time in Junit  

    In this tutorial we will learn about how to virtualize time so that we can have the tests with delay to run faster during the build task in gradle.

  • How to get help ?  

    In this tutorial I will share some reference docs and gitter community to reach out in case if you are stuck with any issues related to project reactor.

Build the first Non Blocking RESTFUL API using Annotated Controllers - Hands On
  • Introduction to Spring Boot 2  

    In this tutorial I will share the webframeworks that are supported in the Spring Ecosystem in Spring 5.0.

  • Build the simple Non Blocking API - Flux  

    In this tutorial we will code the first nonblocking restful api using the annotated controllers approach.

  • JUNIT : Test for Non Blocking API using WebTestClient  

    In this tutorial we will write the JUNIT test cases for the non blocking api using WebTestClient.

  • Junit : Test for infinite Non Blocking Sequence API using WebTestClient  

    In this tutorial we will write the JUNIT test cases for the non blocking infinite sequence api using WebTestClient.

  • Build the simple Non Blocking API - Mono  

    In this tutorial we will build an endpoint that returns a Mono and write a JUNIT test case using WebTestClient.

Build Non Blocking RESTFUL API using Functional Web - Hands On
  • Introduction to Functional Web in Spring WebFlux  

    In this tutorial I will give an introduction to functional web module in Spring WebFlux.

  • Build the simple Non Blocking API using Handler and Router Functions  

    In this tutorial we will code non blocking restful apis using the functinal web module in Spring Webflux.

  • JUNIT for Functional EndPoint using WebTestClient  

    In this tutorial we will write the JUNIT test cases for the Functional Endpoint using WebTestClient.

Spring WebFlux & Netty - Execution Model
  • Spring WebFlux - Behind the Scenes  

    In this tutorial we will learn about the different layers that are involved before serving a HTTP request.

  • Introduction to Netty - Channel, EventLoops  

    In this tutorial we will learn about the netty server, channel, eventloop and some of its technical aspects.

  • Netty - End to End, Threads, Execution Model  

    In this tutorial we will learn about end to end flow of netty, execution model and thread in Netty.

Overview of the Reactive API
  • Application Overview  

    In this tutorial I will give you all an overview of the app that we are going to build as part of this course.

Reactive Programming in Databases - MongoDB - Hands On
  • Setting up Mongo DB  

    In this tutorial, we will talk about setting up the mongo db in your machine.

  • Spring Profiles  

    In this tutorial, we will set up the spring profiles using application.yml file.

  • Build the Item Document  

    In this tutorial, we will build the Item mongo document that’s managed by the Reactive API.

  • Build the Reactive Item Mongo Repository  

    In this tutorial, we will build the reactive mondo repository class to talk to the mongoDB.

  • Reactive Mongo Repository operations using JUNIT - Read - Part1  

    In this tutorial, we will explore the different approaches of reading the data from the mongo db in a reactive way and learn how to write JUNIT test cases.

  • Reactive Mongo Repository operations using JUNIT - Read - Part2  

    In this tutorial, we will explore the different approaches of reading the data from the mongo db in a reactive way and learn how to write JUNIT test cases.

  • Reactive Mongo Repository operations using JUNIT - Custom Read Operation  

    In this tutorial, we will explore reactive mongo repository by adding a new method in the interface which reads the record using the Item description.

  • Reactive Mongo Repository operations using JUNIT - Insert  

    In this tutorial, we will explore how to write the data in to the mongo db in a reactive approach and learn how to write JUNIT test cases.

  • Reactive Mongo Repository operations using JUNIT - Update  

    In this tutorial, we will explore how to update a record in the mongo db in a reactive approach and learn how to write JUNIT test cases.

  • Reactive Mongo Repository operations using JUNIT - Delete  

    In this tutorial, we will explore how to delete a record in the mongo db in a reactive approach and learn how to write JUNIT test cases.

  • Build Artifact  

    In this tutorial we will build the final artifact of the application that we had built so far.

Build the Item Reactive API Endpoint - Using RestController
  • Get All Items  

    In this tutorial we will build reactive endpoint that’s going to return all the items.

  • Initialize the data using CommandLineRunner  

    In this tutorial we will code data initialization part for the item reactive api using the command line runner.

  • Get All Items - JUNIT Test using WebTestClient - Part 1  

    In this tutorial we will write the JUNIT test case for the get all items endpoint using WebTestClient.

  • Get All Items - JUNIT Test using WebTestClient - Part 2  

    In this tutorial we will write the JUNIT test case for the get all items endpoint using WebTestClient.

  • Create an Item Endpoint  

    In this tutorial we will code and write the JUNIT test case for an endpoint that’s going to create an item in the Mongo Database.

  • Delete an Item Endpoint  

    In this tutorial we will code the endpoint to delete an item and write the JUNIT test case for the same in the Mongo Database.

  • Update an Item Endpoint  

    In this tutorial we will code the endpoint to update an item in the Mongo Database.

  • Update an Item Endpoint - Junit  

    In this tutorial we will write the JUNIT test case for the update endpoint in the Mongo Database.

Build the Item Reactive API Endpoint - Using Functional Web
  • Setting up the Router Function and Handler Function for Item Reactive API  

    In this tutorial we will set up the base classes that are needed for the Item Reactive API using the Function Web module.

  • Get All Items - Functional Endpoint  

    In this tutorial we will build reactive endpoint that’s going to return all the items.

  • Get All Items - JUNIT Test using WebTestClient  

    In this tutorial we will write the JUNIT test case for the get all items endpoint using WebTestClient.

  • Get a Single Item - Functional Endpoint  

    In this tutorial we will code and write the JUNIT test case for an endpoint that’s going to return a single Item using WebTestClient.

  • Create an Item - Functional Endpoint  

    In this tutorial we will code the create endpoint that’s going to create an item in the Mongo Database.

  • Delete an Item - Functional Endpoint  

    In this tutorial we will code the delete endpoint that’s going to delete an item from the Mongo Database.

  • Update an Item - Functional Endpoint  

    In this tutorial we will code the update endpoint that’s going to update an item in the Mongo Database.

Build Non Blocking Client using WebClient
  • Setting up the Item WebClient Project  

    In this tutorial we will set up the item-client project to connect to the items reactive API.

  • Explore the retrieve() and exchange() in Webclient  

    In this tutorial we will code and learn how to perform a GET call using the retrieve() and exchange() methods in Webclient.

  • Passing Path Variable using WebClient  

    In this tutorial we will code and learn how to perform the GET call with the path variable as part of the WebClient.

  • Post call using WebClient  

    In this tutorial we will code and learn how to perform the POST call using the WebClient.

  • PUT call using WebClient  

    In this tutorial we will code and learn how to perform the PUT call using the WebClient.

  • Delete call using WebClient  

    In this tutorial we will code and learn how to perform the DELETE call using the WebClient.

Handling Exceptions in WebFlux - Controller
  • Handling Exceptions in Controller - using @ExceptionHandler  

    In this tutorial we will code and learn how to handle and override the behavior of exceptions using the @ExceptionHandler annotation.

  • Handling Exceptions in Controller - using @ControllerAdvice  

    In this tutorial we will code and learn how to handle and override the behavior of exceptions globally using the @ControllerAdvice annotation.

  • Handling Exceptions in Controller - JUNIT  

    In this tutorial we will code and learn how towrite Junit test cases for the endpoint that throws an exception.

Handling Exceptions in WebFlux - Functional Web
  • Default Exception Behavior - Functional Web  

    In this tutorial we will build an enpoint that throws an exception to the client and we will analyze the default behavior of Exception handling in Funcitonal Web.

  • Handling Exceptions using AbstractErrorWebExceptionHandler  

    In this tutorial we will code and learn how to handle and override the behavior of exceptions using the AbstractErrorWebExceptionHandler annotation.

Build Non Blocking Client using WebClient - Exception Handling
  • Handling Errors in WebClient - retrieve()  

    In this tutorial we will code and learn how to handle the errors in the retrieve() method call that’s part of the WebClient.

  • Handling Errors in WebClient - exchange()  

    In this tutorial we will code and learn how to handle the errors in the exchange() method call that’s part of the WebClient.

Streaming Real Time Data using WebFlux - Server Side Events (SSE)
  • What is a Streaming EndPoint ?  

    In this tutorial I will give you all an introduction to Streaming Endpoint and explain about the differences between the streaming and non streaming end point.

  • Setting up the Capped Collection and new Reposoitory - MongoDB  

    In this tutorial I will introduce you to new terminologies in mongoDB capped collections and Tailable Cursor. In addition to that we will set up the new Capped Item Document and set up the new Reactive Repository Interface.

  • Build Tailable Cursor using @Tailable Annotation  

    In this tutorial we will set tup the Tailable cursor using the @Tailable Annotation.

  • Initialize data using "CommandLineRunner"  

    In this tutorial we will code the data initiialization in to the mongo db for the capped collection repository

  • Build the Stream Endpoint using Controller  

    In this tutorial we will code the Item Stream end point using Controller.

  • JUNIT Test for Streaming endpoint using Controller  

    In this tutorial we will code and write the JUNIT test case for the Item Stream end point using Controller.

  • Build the Stream Endpoint using Functional Web  

    In this tutorial we will code the Item Stream end point using Functional Web.

  • JUNIT Test for Streaming endpoint using Functional Web  

    In this tutorial we will code and write the JUNIT test case for the Item Stream end point using Functional Web.

Reviews (0)