Tags
Language
Tags
October 2024
Su Mo Tu We Th Fr Sa
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2

Kotlin Spring Boot Api Design First With Spring Security

Posted By: ELK1nG
Kotlin Spring Boot Api Design First With Spring Security

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