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: [Link]
✏️ Course from Sanjeev Thiyagarajan. Check out his channel:
[Link]
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
[Link] Schema Validation with Pydantic
[Link] CRUD Operations
[Link] Storing in Array
[Link] Creating
[Link] Postman Collections & saving requests
[Link] Retrieve One
[Link] Path order Matters
[Link] Changing response Status Codes
[Link] Deleting
[Link] Updating
[Link] Automatic Documentation
[Link] Python packages
[Link] Database Intro
[Link] Postgres Windows Install
[Link] Postgres Mac Install
[Link] Database Schema & Tables
[Link] Managing Postgres with PgAdmin GUI
[Link] Your first SQL Query
[Link] Filter results with "where"
[Link] SQL Operators
[Link] IN
[Link] Pattern matching with LIKE
[Link] Ordering Results
[Link] LIMIT & OFFSET
[Link] Modifying Data
[Link] Setup App Database
[Link] Connecting to database w/ Python
[Link] Database CRUD
[Link] ORM intro
[Link] SQLALCHEMY setup
[Link] Adding CreatedAt Column
[Link] Get All
[Link] Create
[Link] Get by ID
[Link] Delete
[Link] Update
[Link] Pydantic vs ORM Models
[Link] Pydantic Models Deep Dive
[Link] Response Model
[Link] Creating Users Table
[Link] User Registration Path Operation
[Link] Hashing Passwords
[Link] Refractor Hashing Logic
[Link] Get User by ID
[Link] FastAPI Routers
[Link] Router Prefix
[Link] Router Tags
[Link] JWT Token Basics
[Link] Login Process
[Link] Creating Token
[Link] OAuth2 PasswordRequestForm
[Link] Verify user is Logged In
[Link] Fixing Bugs
[Link] Protecting Routes
[Link] Test Expired Token
[Link] Fetching User in Protected Routes
[Link] Postman advanced Features
[Link] SQL Relationship Basics
[Link] Postgres Foreign Keys
[Link] SQLAlchemy Foreign Keys
[Link] Update Schema to include User
[Link] Assigning Owner id when creating new
[Link] Delete and Update only your own
[Link] Only Retrieving Logged in User's
[Link] Sqlalchemy Relationships
[Link] Query Parameters
[Link] Cleanup our [Link] file
[Link] Env Variables
[Link] Vote/Like Theory
[Link] Votes Table
[Link] Votes Sqlalchemy
[Link] Votes Route
[Link] SQL Joins
[Link] Joins in SqlAlchemy
[Link] Get One with Joins
[Link] What is a database migration tool
[Link] Alembic Setup
[Link] Disable SqlAlchemy create Engine
[Link] What is CORS?
[Link] Git PreReqs
[Link] Git Install
[Link] Github
[Link] Heroku intro
[Link] Create Heroku App
[Link] Heroku procfile
[Link] Adding a Postgres database
[Link] Env Variables in Heroku
[Link] Alembic migrations on Heroku Postgres instance
[Link] Pushing changed to production
[Link] Create an Ubuntu VM
[Link] Update packages
[Link] Install Python
[Link] Install Postgres & setup password
[Link] Postgres Config
[Link] Create new user and setup python evironment
[Link] Env Variables
[Link] Alembic migrations on production database
[Link] Gunicorn
[Link] Creating a Systemd service
[Link] NGINX
[Link] Setting up Domain name
[Link] SSL/HTTPS
[Link] NGINX enable
[Link] Firewall
[Link] Pushing code changes to Production
[Link] Dockerfile
[Link] Docker Compose
[Link] Postgres Container
[Link] Bind Mounts
[Link] Dockerhub
[Link] Production vs Development
[Link] Testing Intro
[Link] Writing your first test
[Link] The -s & -v flags
[Link] Testing more functions
[Link] Parametrize
[Link] Testing Classes
[Link] Fixtures
[Link] Combining Fixtures + Parametrize
[Link] Testing Exceptions
[Link] FastAPI TestClient
[Link] Pytest flags
[Link] Test create user
[Link] Setup testing database
[Link] Create & destroy database after each test
[Link] More Fixtures to handle database interaction
[Link] Trailing slashes in path
[Link] Fixture scope
[Link] Test user fixture
[Link] Test/validate token
[Link] [Link]
[Link] Testing
[Link] CI/CD intro
[Link] Github Actions
[Link] Creating Jobs
[Link] setup python/dependencies/pytest
[Link] Env variables
[Link] Github Secrets
[Link] Testing database
[Link] Building Docker images
[Link] Deploy to heroku
[Link] Failing tests in pipeline
[Link] Deploy to Ubuntu