Level 7 - Project Milestones
Below is a list of milestones for the Level 7 project. Each will likely take more than one
class to complete, but they are divided based on topic
Milestone 1 - Introduction to API concepts
What is this all about? Here you will present some background material on the project, APIs, and RESTful web services.
Milestone 2 - Project Code Structure
The structure of a Spring Boot application. We'll discuss the 3-tier architecture, as well as a couple special files that are important to our application.
Milestone 3 - Documenting and Accessing Our Code with Swagger
Time to start writing code. We'll talk about Controller classes, Swagger, and how to return custom HTTP response codes when needed.
Milestone 4 - The Presentation Layer
Here we will add a new controller class that will map a request URL to the method that we want to execute when a
request is sent there.
Milestone 5 - The Service Layer
Our service layer class will be called by the controller layer when a request comes in. We will
add a new class to contain all of our application's business logic
Milestone 6 - The Repository Layer
Our endpoint's journey through the layers of application will end here, at the repository layer. Eventually
we will use the repository layer to retrieve data for our application, but for now lets just get it added.
Milestone 7 - Fetching Data with WebClient
Time to request some actual data to give to our users. Using the WebClient class, we will
retrieve information from an external service.
Milestone 8 - Improving the Results
We are going to create a custom Java object in which to receive the response from our WebClient
request. Then, we can improve the quality of our application's results by removing unnecessary fields, and renaming
them if need be.
Milestone 9 - Our First Unit Test
Now let's begin adding unit tests in order to verify our code is working as expected in an
easily repeatable way. We'll start with the easiest class in our application to test: the HomeController.
Milestone 10 - Unit Testing the Controller and Service Classes
Continuing with unit testing, we will add unit tests for our other controller class, as well as
our service class.
Milestone 11 - Unit Testing the Repository Class
Our final unit test will be the most complex. Here we will unit test our repository class, which
includes mocking our WebClient request and the associated classes.
Milestone 12 - Preparing for Integration Testing
Here we will start discussing integration testing, and make some changes to our project to prepare
for our new tests.
Milestone 13 - Integration Testing the Home Controller
Time to add our first integration test. We will go over the basics by adding a test for our
Milestone 14 - Integration Testing the LocController
In the final section of our project, we will add an integration test for our LocController class. This
includes discussing how we are able to supply a mock, and verify the response from the request is what
Epilogue - The Front End
Our completed application provides users with pristine data, but as humans we usually interact with
web applications through a convenient graphical user interface, known as a website. While creating
a front end application is not within the scope of this level, teachers can utilize a convenient template
to create a React application that is capable of displaying information returned from our application.
This demonstrates how it can all come together to form a modern, human-friendly set of web applications
that provide, as well as display, information.