Python API Development - Comprehensive Course for Beginners (New fcc course)
Tags: python, postgres, aws, docker
Published: 2021-11-01 14:33:20

Hi guys! An amazing new course has just been posted on freeCodeCamp. 19 hours of course, what madness!

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.

You can add this course to the free Uolia app to record your progress in the course and avoid forgetting how far you have come, as well as being able to add bookmarks, notes and ToDos.

Course: https://uolia.com/0sOvCWFmrtA

💻 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