11 hours ago
Kotlin Spring Boot Api Design First With Spring Security
Published 10/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 13.41 GB | Duration: 28h 18m
API design first backend for grocery shopping with user authorisation and authentication for an RESTful API
What you'll learn
Learn how to quickly design the database schema by using online tools
Learn how to set up a local dev environment with a Postgres Docker Container and connect it with your IDE
Learn how to create an API First Design backend
Learn in a practical way Spring Security by authorisation and authentication with user sign up via an SMTP service
Learn how to implement an RESTful grocery shopping API
Learn how to properly write Unit & Integration Tests for your backend
Learn how to generate collections by using an YAML file and test your endpoints manually with Postman
Requirements
Internet connection
Docker Desktop (free version)
Postman (free version)
IDE (I recommend IntelliJ, but VS Code is also fine)
A bit of Kotlin and Spring Boot experience
Description
Unlock the power of Kotlin and Spring Boot to build robust, scalable backend systems with an API-first approach. In this comprehensive course, you will learn how to design, develop, and secure a RESTful API tailored for grocery shopping applications.Starting with the foundational concepts, you'll dive deep into API design using YAML files, where you'll define your endpoints and Data Transfer Objects (DTOs) before writing any backend code. This approach ensures a clear, well-documented API that is consistent, easy to maintain, and ready for integration from the get-go.What You'll Learn:API-First Design: Master the principles of API-first development by defining your endpoints and DTOs in YAML. Learn how this approach can streamline your development process and improve collaboration with frontend teams.Kotlin with Spring Boot: Harness the full potential of Kotlin, a modern programming language, alongside Spring Boot, a powerful framework, to develop your backend logic. We'll cover everything from setting up your project to implementing business logic.Building RESTful APIs: Create a feature-rich RESTful API for a grocery shopping application. You'll build endpoints for product browsing, shopping cart management, order processing, and more.User Authentication and Authorization: Implement robust security features using Spring Security and JWT (JSON Web Tokens). Learn how to handle user sign-up, sign-in, and role-based access control to protect your API.Database Integration: Connect your API to a database and manage data persistence effectively. You'll work with Kotlin data classes, JPA (Java Persistence API), and Hibernate to interact with your data layer.Testing and Validation: Ensure your API is reliable and bug-free by writing comprehensive unit and integration tests. Validate inputs and handle errors gracefully to provide a seamless user experience.Deployment and Best Practices: Deploy your Spring Boot application to production environments, and learn best practices for maintaining and scaling your API.Who Should Enroll:Aspiring Backend Developers: If you're looking to specialize in backend development, this course will give you the essential skills and knowledge to build production-ready APIs using Kotlin and Spring Boot.Experienced Developers: For those already familiar with backend development, this course offers an in-depth look at API-first design and security best practices, enhancing your current skill set.Full-Stack Developers: If you work on both frontend and backend, this course will help you streamline the backend side of your projects, making integration with frontend components smoother and more efficient.Why This Course?Hands-On Learning: Gain practical experience by building a fully functional grocery shopping API from start to finish.Expert Instruction: Learn from an experienced backend developer with a deep understanding of Kotlin and Spring Boot.Real-World Application: The course is designed with real-world scenarios in mind, ensuring you gain skills that are directly applicable in the job market.By the end of this course, you'll have the confidence to design, develop, and secure RESTful APIs with an API-first approach, using Kotlin and Spring Boot. Whether you're building your own projects or contributing to large-scale applications, this course will equip you with the tools you need to succeed.Enroll today and start your journey to becoming a proficient backend developer!
Overview
Section 1: Introduction
Lecture 1 Introduction
Section 2: Database schema design
Lecture 2 Start with the database schema
Lecture 3 Finish the database schema
Section 3: Set up your local dev database
Lecture 4 Create a new docker network and container
Lecture 5 Create the groceries database
Lecture 6 Summary about the last commands
Section 4: Set up Kotlin Spring Boot project
Lecture 7 Set up your IDE & connect to Postgres
Lecture 8 Commit for .gitignore and rest of project
Lecture 9 Dependencies in build.gradle.kts Part 1
Lecture 10 Dependencies in build.gradle.kts Part 2
Lecture 11 Start to set up the application.yml file
Lecture 12 Finish set up of application.yml file
Lecture 13 Creating a local .env file
Lecture 14 Explanation of the Spring Logs
Lecture 15 First interaction with the open-api.yml file
Lecture 16 Explaining the branches of the project
Section 5: The error package
Lecture 17 The API error class
Lecture 18 Start to implement GlobalExceptionHandler
Lecture 19 Implement all custom exception classes
Lecture 20 Start to group the exception classes
Lecture 21 Finish error package
Section 6: The user package
Lecture 22 Start to implement user entity
Lecture 23 Inherit from UserDetails interface
Lecture 24 Set one to one relationship to verification token
Lecture 25 Set one to many relationship to shopping list
Lecture 26 Create the user repository
Lecture 27 Create an interface for the user service
Lecture 28 Design your first endpoint in YAML
Lecture 29 Design your first data transfer object in YAML
Lecture 30 Design other PATCH endpoints in YAML for user resource
Lecture 31 Finish designing all endpoints and DTOs for user resource
Lecture 32 Generate code for user resource and DTOs
Lecture 33 Create a mapper for an entity to DTO
Lecture 34 Start implementation of user service
Lecture 35 Implement the authentication config class
Lecture 36 Define an interface for signed-in user session
Lecture 37 Implement change password logic for user
Lecture 38 Finish implementation of user service
Lecture 39 Implement user controller
Lecture 40 Generate enum classes
Lecture 41 Start to set up the integration tests for user repository
Lecture 42 First integration tests for finding user by email
Lecture 43 Finish the integration tests for user repository
Lecture 44 User mapper unit test
Lecture 45 Start with adding fields for user service unit tests
Lecture 46 Unit test for change user email
Lecture 47 Unit test for trigger invalid email format exception
Lecture 48 More unit tests for bad request exception regarding email
Lecture 49 Unit test for change user password
Lecture 50 Triggering password mismatch exception tests
Lecture 51 Finish unit tests for user service
Section 7: The auth package
Lecture 52 Create the repository for verification token
Lecture 53 Implement client session service
Lecture 54 Generate JWT secret key
Lecture 55 Implement logic for generating JWT keys
Lecture 56 Extract username from JWT token
Lecture 57 Finish implementing JWT service
Lecture 58 Setup SMTP service with Brevo
Lecture 59 Start implementing email service
Lecture 60 Implement logic for send emails
Lecture 61 Finish implementation of email service
Lecture 62 Start to define auth endpoints
Lecture 63 Define first DTOs for auth endpoints
Lecture 64 Define verify user and sign-in endpoints
Lecture 65 Finish defining auth endpoints
Lecture 66 Create mapper for register request to user entity
Lecture 67 Start implementing account management service
Lecture 68 Implement user sign-up
Lecture 69 Implement verify user
Lecture 70 Implement sign-in user
Lecture 71 Implement reset user password
Lecture 72 Start implementing the filter for JWT
Lecture 73 Implement first request filter
Lecture 74 The auth controller
Lecture 75 Start implementing the security config for the API
Lecture 76 Finish implementing security config for API
Lecture 77 Fix JWT filter bug
Lecture 78 Start testing endpoints with Postman
Lecture 79 Test remaining endpoints in Postman
Lecture 80 Integration test for verification token repo
Lecture 81 Unit test for sign-up mapper
Lecture 82 Unit tests for JWT key creation
Lecture 83 Preparing to write unit tests for account management service
Lecture 84 Unit test for successful user sign-up
Lecture 85 Unit tests for sign-up exceptions
Lecture 86 Unit test verify user for success case
Lecture 87 Unit test verify user exception cases
Lecture 88 Unit test verify for expired verification token
Lecture 89 Unit test sign-in for authentication response
Lecture 90 Unit test sign-in exceptions cases
Lecture 91 Unit tests for reset password
Lecture 92 Set up client session service test class
Lecture 93 Unit tests for client sessions methods for the success cases
Lecture 94 Unit tests for client sessions methods for the exception cases
Lecture 95 Start unit tests for email service
Lecture 96 Finish unit tests for email service
Lecture 97 Set up the jwt service test class
Lecture 98 First unit test for jwt service
Lecture 99 Unit test for exception case and is token valid logic of jwt service class
Lecture 100 Finish unit tests for jwt service
Lecture 101 Improve unit tests for email service
Lecture 102 Set up integration test for authentication controller
Lecture 103 Integration test for sign-up endpoint
Lecture 104 Finish integration tests for authentication controller
Lecture 105 Start to setup integration tests for user controller
Lecture 106 Integration test for change email endpoint for user controller
Lecture 107 More integration tests for user controller endpoints
Lecture 108 Finish integrations tests for user controller
Section 8: The config package
Lecture 109 Short explanation of the config package
Section 9: The retail package
Lecture 110 Start to design the endpoints for shopping list
Lecture 111 Start to define DTOs for shopping list endpoints
Lecture 112 More DTOs to define
Lecture 113 Define more DTOs for shopping list item and supermarket
Lecture 114 Define new endpoints for fetching and deleting a specific shopping list
Lecture 115 Define patch endpoint for shopping list by id plus the DTOs
Lecture 116 Define a new endpoint for GET and POST requests for list items
Lecture 117 Define a new endpoint for GET and DELETE and PATCH for a specific list item
Lecture 118 Define the DTOs for updating a list item
Lecture 119 Define two more endpoints for grocery item
Lecture 120 Create new entity and modify existing one
Lecture 121 Create remaining entities
Lecture 122 Implement business logic related handling supermarket
Lecture 123 Start to implement business logic for grocery item
Lecture 124 Finish implementing the logic for grocery item service
Lecture 125 Create repo and mapper for shopping list item
Lecture 126 Start to implement shopping list item service
Lecture 127 Finish implementing the shopping list item service
Lecture 128 Implement repository and mapper for shopping list
Lecture 129 Define the methods for shopping list service
Lecture 130 Start to implement shopping list service
Lecture 131 Finish implementing helper methods for shopping list service
Lecture 132 Implement methods for creating and fetching a specific shopping list
Lecture 133 Implement get shopping lists method
Lecture 134 Implement update and delete methods for shopping list service
Lecture 135 Implement methods for grocery item and shopping list item
Lecture 136 Finish implementing shopping list service
Lecture 137 Implement the grocery item controller
Lecture 138 Implement shopping list item controller
Lecture 139 Fix error in shopping list item controller
Lecture 140 Implement shopping list controller
Lecture 141 Integration Tests for grocery item repository
Lecture 142 Integration Tests for supermarket repository
Lecture 143 Integration Tests for shopping list item
Lecture 144 Setup class for shopping list repository integration tests
Lecture 145 Write the first integration tests for shopping list repository
Lecture 146 Finish integration tests for shopping list repository
Lecture 147 Unit Tests for grocery item mapper
Lecture 148 Finish unit tests for remaining mapper classes
Lecture 149 Unit Tests for supermarket service
Lecture 150 Start with unit tests for grocery item service
Lecture 151 More unit tests for grocery item service
Lecture 152 Finish unit tests for grocery item service
Lecture 153 Start writing unit tests for shopping list item service
Lecture 154 Unit Tests for deleting list items in shopping list item service
Lecture 155 Unit Test for creating a list item in shopping list item service
Lecture 156 Finish unit tests for shopping list item service
Lecture 157 Start setting up shopping list service
Lecture 158 First unit test for shopping list service
Lecture 159 Unit Test exception for creating a shopping list and fetching a shopping list
Lecture 160 Unit Tests for fetching a single and multiple shopping lists
Lecture 161 Finalise unit tests for fetching multiple shopping lists
Lecture 162 Start unit testing updating a shopping list
Lecture 163 Unit Test update and delete shopping list
Lecture 164 Unit Test fetching a single grocery item in shopping list service
Lecture 165 Unit Test updating a grocery item and fetch list items in shopping list service
Lecture 166 Unit Tests for get shopping list item
Lecture 167 Unit Test create shopping list item response
Lecture 168 Unit Tests for deleting list item in shopping list service
Lecture 169 Finalise unit tests in shopping list service
Lecture 170 Setup integration test for grocery item controller
Lecture 171 First integration test for update grocery item
Lecture 172 Finish integration tests for grocery item controller
Lecture 173 Start with the first integration test for shopping list item controller
Lecture 174 Integration tests for delete and fetch specific list item
Lecture 175 Finish integration tests for shopping list item controller
Lecture 176 Start writing first integration test for shopping list controller
Lecture 177 Integration Tests for deleting and fetching a specific shopping list
Lecture 178 Finalise integration tests for shopping list controller
Section 10: Testing endpoints in Postman
Lecture 179 Insert supermarket entries into database
Lecture 180 Generate new Postman collection
Lecture 181 Manually test the grocery-item-resource endpoints
Lecture 182 Manually test the shopping-list-item-resource endpoints
Lecture 183 Manually test the shopping-list-resource endpoints
Section 11: Outro
Lecture 184 Summary and improvement ideas
Beginners and intermediate software developers