Chapters (157)
- 0:00Intro
- 6:33Project Overview
- 11:22Mac Python Installation
- 13:15Mac VS Code install and setup
- 16:37Windows Python Installation
- 18:30Windows VS Code install and setup
- 22:11Python virtual Env Basics
- 24:35Virtual Env on windows
- 28:56Virtual Env on Mac
- 34:17Install dependencies w/ pip
- 36:21Starting FastAPI
- 39:23Path Operations
- 53:22Intro toman
- 57:34HTTP Requests
- 1:07:29Schema Validation with Pydantic
- 1:22:45CRUD Operations
- 1:29:44Storing in Array
- 1:34:06Creating
- 1:38:15Postman Collections & saving requests
- 1:39:47Retrieve One
- 1:48:10Path order Matters
- 1:52:46Changing response Status Codes
- 2:01:49Deleting
- 2:10:31Updating
- 2:18:02Automatic Documentation
- 2:21:34Python packages
- 2:24:11Database Intro
- 2:28:54Postgres Windows Install
- 2:31:28Postgres Mac Install
- 2:34:26Database Schema & Tables
- 2:44:35Managing Postgres with PgAdmin GUI
- 3:12:10Your first SQL Query
- 3:19:43Filter results with "where"
- 3:22:55SQL Operators
- 3:26:38IN
- 3:28:07Pattern matching with LIKE
- 3:31:59Ordering Results
- 3:36:27LIMIT & OFFSET
- 3:39:21Modifying Data
- 3:53:48Setup App Database
- 3:58:21Connecting to database w/ Python
- 4:08:00Database CRUD
- 4:31:18ORM intro
- 4:35:33SQLALCHEMY setup
- 4:55:25Adding CreatedAt Column
- 5:00:59Get All
- 5:07:55Create
- 5:15:50Get by ID
- 5:19:50Delete
- 5:22:31Update
- 5:28:21Pydantic vs ORM Models
- 5:32:21Pydantic Models Deep Dive
- 5:38:57Response Model
- 5:50:08Creating Users Table
- 5:54:50User Registration Path Operation
- 6:03:27Hashing Passwords
- 6:08:49Refractor Hashing Logic
- 6:10:32Get User by ID
- 6:17:13FastAPI Routers
- 6:27:34Router Prefix
- 6:30:31Router Tags
- 6:32:49JWT Token Basics
- 6:47:03Login Process
- 7:00:44Creating Token
- 7:09:58OAuth2 PasswordRequestForm
- 7:13:23Verify user is Logged In
- 7:25:21Fixing Bugs
- 7:27:59Protecting Routes
- 7:36:17Test Expired Token
- 7:38:13Fetching User in Protected Routes
- 7:42:44Postman advanced Features
- 7:50:33SQL Relationship Basics
- 7:54:59Postgres Foreign Keys
- 8:07:20SQLAlchemy Foreign Keys
- 8:13:40Update Schema to include User
- 8:17:59Assigning Owner id when creating new
- 8:21:01Delete and Update only your own
- 8:27:48Only Retrieving Logged in User's
- 8:33:37Sqlalchemy Relationships
- 8:38:32Query Parameters
- 8:50:46Cleanup our main.py file
- 8:53:53Env Variables
- 9:21:20Vote/Like Theory
- 9:26:36Votes Table
- 9:31:33Votes Sqlalchemy
- 9:34:11Votes Route
- 9:52:31SQL Joins
- 10:15:26Joins in SqlAlchemy
- 10:28:21Get One with Joins
- 10:30:18What is a database migration tool
- 10:33:45Alembic Setup
- 11:13:50Disable SqlAlchemy create Engine
- 11:14:28What is CORS?
- 11:23:38Git PreReqs
- 11:27:40Git Install
- 11:29:23Github
- 11:34:39Heroku intro
- 11:35:40Create Heroku App
- 11:40:21Heroku procfile
- 11:44:59Adding a Postgres database
- 11:48:42Env Variables in Heroku
- 11:58:59Alembic migrations on Heroku Postgres instance
- 12:02:52Pushing changed to production
- 12:05:04Create an Ubuntu VM
- 12:08:04Update packages
- 12:10:47Install Python
- 12:12:21Install Postgres & setup password
- 12:17:28Postgres Config
- 12:24:50Create new user and setup python evironment
- 12:34:06Env Variables
- 12:42:24Alembic migrations on production database
- 12:45:57Gunicorn
- 12:54:12Creating a Systemd service
- 13:04:45NGINX
- 13:10:45Setting up Domain name
- 13:15:19SSL/HTTPS
- 13:19:31NGINX enable
- 13:20:06Firewall
- 13:23:47Pushing code changes to Production
- 13:26:09Dockerfile
- 13:38:39Docker Compose
- 13:48:34Postgres Container
- 13:56:22Bind Mounts
- 14:03:39Dockerhub
- 14:08:08Production vs Development
- 14:14:51Testing Intro
- 14:17:19Writing your first test
- 14:30:22The -s & -v flags
- 14:31:44Testing more functions
- 14:35:29Parametrize
- 14:40:21Testing Classes
- 14:48:37Fixtures
- 14:55:40Combining Fixtures + Parametrize
- 14:59:13Testing Exceptions
- 15:06:07FastAPI TestClient
- 15:14:26Pytest flags
- 15:17:31Test create user
- 15:25:23Setup testing database
- 15:36:47Create & destroy database after each test
- 15:44:18More Fixtures to handle database interaction
- 15:50:35Trailing slashes in path
- 15:53:12Fixture scope
- 16:07:50Test user fixture
- 16:14:40Test/validate token
- 16:18:59Conftest.py
- 16:22:09Testing
- 17:34:15CI/CD intro
- 17:43:29Github Actions
- 17:49:32Creating Jobs
- 17:57:38setup python/dependencies/pytest
- 18:06:14Env variables
- 18:11:19Github Secrets
- 18:18:14Testing database
- 18:23:42Building Docker images
- 18:34:33Deploy to heroku
- 18:49:10Failing tests in pipeline
- 18:52:18Deploy to Ubuntu
Show the creator's full description
Learn Python API development in one of the most comprehensive courses ever on the topic. You will build a full-fledged API in Python using FastAPI. You will learn the fundamentals of API design including routes, serialization/deserialization, schema validation, and models. You will also learn about SQL, testing with pytest, and how to build out a CI/CD pipeline using GitHub actions.
💻 Code: https://github.com/Sanjeev-Thiyagarajan/fastapi-course
✏️ Course from Sanjeev Thiyagarajan. Check out his channel: https://www.youtube.com/channel/UC2sYgV-NV6S5_-pqLGChoNQ
⭐️ Course Contents
00:00 Intro
06:33 Project Overview
11:22 Mac Python Installation
13:15 Mac VS Code install and setup
16:37 Windows Python Installation
18:30 Windows VS Code install and setup
22:11 Python virtual Env Basics
24:35 Virtual Env on windows
28:56 Virtual Env on Mac
34:17 Install dependencies w/ pip
36:21 Starting FastAPI
39:23 Path Operations
53:22 Intro toman
57:34 HTTP Requests
1:07:29 Schema Validation with Pydantic
1:22:45 CRUD Operations
1:29:44 Storing in Array
1:34:06 Creating
1:38:15 Postman Collections & saving requests
1:39:47 Retrieve One
1:48:10 Path order Matters
1:52:46 Changing response Status Codes
2:01:49 Deleting
2:10:31 Updating
2:18:02 Automatic Documentation
2:21:34 Python packages
2:24:11 Database Intro
2:28:54 Postgres Windows Install
2:31:28 Postgres Mac Install
2:34:26 Database Schema & Tables
2:44:35 Managing Postgres with PgAdmin GUI
3:12:10 Your first SQL Query
3:19:43 Filter results with "where"
3:22:55 SQL Operators
3:26:38 IN
3:28:07 Pattern matching with LIKE
3:31:59 Ordering Results
3:36:27 LIMIT & OFFSET
3:39:21 Modifying Data
3:53:48 Setup App Database
3:58:21 Connecting to database w/ Python
4:08:00 Database CRUD
4:31:18 ORM intro
4:35:33 SQLALCHEMY setup
4:55:25 Adding CreatedAt Column
5:00:59 Get All
5:07:55 Create
5:15:50 Get by ID
5:19:50 Delete
5:22:31 Update
5:28:21 Pydantic vs ORM Models
5:32:21 Pydantic Models Deep Dive
5:38:57 Response Model
5:50:08 Creating Users Table
5:54:50 User Registration Path Operation
6:03:27 Hashing Passwords
6:08:49 Refractor Hashing Logic
6:10:32 Get User by ID
6:17:13 FastAPI Routers
6:27:34 Router Prefix
6:30:31 Router Tags
6:32:49 JWT Token Basics
6:47:03 Login Process
7:00:44 Creating Token
7:09:58 OAuth2 PasswordRequestForm
7:13:23 Verify user is Logged In
7:25:21 Fixing Bugs
7:27:59 Protecting Routes
7:36:17 Test Expired Token
7:38:13 Fetching User in Protected Routes
7:42:44 Postman advanced Features
7:50:33 SQL Relationship Basics
7:54:59 Postgres Foreign Keys
8:07:20 SQLAlchemy Foreign Keys
8:13:40 Update Schema to include User
8:17:59 Assigning Owner id when creating new
8:21:01 Delete and Update only your own
8:27:48 Only Retrieving Logged in User's
8:33:37 Sqlalchemy Relationships
8:38:32 Query Parameters
8:50:46 Cleanup our main.py file
8:53:53 Env Variables
9:21:20 Vote/Like Theory
9:26:36 Votes Table
9:31:33 Votes Sqlalchemy
9:34:11 Votes Route
9:52:31 SQL Joins
10:15:26 Joins in SqlAlchemy
10:28:21 Get One with Joins
10:30:18 What is a database migration tool
10:33:45 Alembic Setup
11:13:50 Disable SqlAlchemy create Engine
11:14:28 What is CORS?
11:23:38 Git PreReqs
11:27:40 Git Install
11:29:23 Github
11:34:39 Heroku intro
11:35:40 Create Heroku App
11:40:21 Heroku procfile
11:44:59 Adding a Postgres database
11:48:42 Env Variables in Heroku
11:58:59 Alembic migrations on Heroku Postgres instance
12:02:52 Pushing changed to production
12:05:04 Create an Ubuntu VM
12:08:04 Update packages
12:10:47 Install Python
12:12:21 Install Postgres & setup password
12:17:28 Postgres Config
12:24:50 Create new user and setup python evironment
12:34:06 Env Variables
12:42:24 Alembic migrations on production database
12:45:57 Gunicorn
12:54:12 Creating a Systemd service
13:04:45 NGINX
13:10:45 Setting up Domain name
13:15:19 SSL/HTTPS
13:19:31 NGINX enable
13:20:06 Firewall
13:23:47 Pushing code changes to Production
13:26:09 Dockerfile
13:38:39 Docker Compose
13:48:34 Postgres Container
13:56:22 Bind Mounts
14:03:39 Dockerhub
14:08:08 Production vs Development
14:14:51 Testing Intro
14:17:19 Writing your first test
14:30:22 The -s & -v flags
14:31:44 Testing more functions
14:35:29 Parametrize
14:40:21 Testing Classes
14:48:37 Fixtures
14:55:40 Combining Fixtures + Parametrize
14:59:13 Testing Exceptions
15:06:07 FastAPI TestClient
15:14:26 Pytest flags
15:17:31 Test create user
15:25:23 Setup testing database
15:36:47 Create & destroy database after each test
15:44:18 More Fixtures to handle database interaction
15:50:35 Trailing slashes in path
15:53:12 Fixture scope
16:07:50 Test user fixture
16:14:40 Test/validate token
16:18:59 Conftest.py
16:22:09 Testing
17:34:15 CI/CD intro
17:43:29 Github Actions
17:49:32 Creating Jobs
17:57:38 setup python/dependencies/pytest
18:06:14 Env variables
18:11:19 Github Secrets
18:18:14 Testing database
18:23:42 Building Docker images
18:34:33 Deploy to heroku
18:49:10 Failing tests in pipeline
18:52:18 Deploy to Ubuntu
Description and video by freeCodeCamp.org. This page is an independent companion view; the video is embedded from YouTube.