- Kodeloka
- Kelas FastAPI
- Materi
Materi tertulis · 24 modul
Materi FastAPI
Kelas FastAPI berbahasa Indonesia: 24 modul tentang path dan query parameter, Pydantic v2, SQLAlchemy dan Alembic, dependency injection, autentikasi JWT, WebSocket, pengujian, dan deployment Docker.
Dasar & Frontend
- 1. Getting Started - Web App + REST APIMemahami arsitektur FastAPI, pemrograman Asynchronous (async/await), ASGI server Uvicorn, dan dokumentasi OpenAPI otomatis.
- 2. HTML Frontend & Jinja2 TemplatesMenyajikan tampilan HTML interaktif menggunakan Jinja2Templates dan menyajikan berkas statis (CSS/JS) dengan StaticFiles.
- 3. Path Parameters & Type HintsMengambil variabel dari URL path (/posts/{post_id}), konversi tipe otomatis (int, str), dan penanganan Error 422.
Data & Models
- 4. Query Parameters & Optional ValuesMenangani query string (/posts?limit=10&page=1), argumen opsional dengan typing.Optional, dan nilai default.
- 5. Request Body & Pydantic SchemasMendefinisikan skema data masukan JSON dengan Pydantic v2 BaseModel, Field validation, dan skema bertingkat.
- 6. Form Data & Asynchronous File UploadsMenerima form-data HTML biasa dengan Form() dan mengunggah berkas media (gambar profil) dengan UploadFile.
- 7. Response Models & Error HandlingFilter data keluaran dengan response_model, menetapkan HTTP status code standar, dan melempar HTTPException.
Database & Auth
- 8. Adding a Database (SQLAlchemy Setup & Session)Menghubungkan aplikasi ke database PostgreSQL / SQLite menggunakan SQLAlchemy 2.0 ORM dan SessionLocal pattern.
- 9. Database Models, Relationships & CRUDMendesain tabel SQLAlchemy (User & Post), relasi One-to-Many (ForeignKey), dan operasi CRUD (Create, Read, Update, Delete).
- 10. Database Migrations dengan AlembicMengelola perubahan skema database terversi menggunakan Alembic migrations tanpa merusak data produksi.
- 11. Dependency Injection System (Depends)Menguasai sistem Dependency Injection FastAPI dengan Depends(), reutilisasi logika koneksi DB & otentikasi user.
- 12. Password Hashing & Security dengan pwdlib (Argon2)Mengamankan password pengguna dengan algoritma hashing 1-way (Bcrypt/Argon2) menggunakan pwdlib PasswordHash.recommended().
- 13. User Registration & Login FlowMembangun alur pendaftaran akun pengguna, cek keunikan email/username, dan penerbitan token sesi.
- 14. Authentication & Authorization dengan JWT TokensMembuat dan mengekstrak JSON Web Tokens (JWT), menentukan masa berlaku token, dan mengamankan rute terproteksi.
Advanced & Deploy
- 15. APIRouter & Project Modular StructuringMemecah kode aplikasi menjadi modul-modul independen menggunakan APIRouter (users.py, posts.py, auth.py).
- 16. Lifespan Events & Manajemen Sumber Daya AplikasiMengganti on_event yang sudah usang dengan lifespan context manager untuk mengelola pool koneksi, klien HTTP, dan model machine learning.
- 17. Middleware & CORS ConfigurationMengizinkan akses frontend lintas origin dengan CORSMiddleware & membuat middleware kustom pemroses request.
- 18. Rate Limiting & Perlindungan APIMembatasi laju permintaan dengan algoritma sliding window berbasis Redis, menetapkan kuota per pengguna, serta menambahkan header standar dan security header.
- 19. Background Tasks & Asynchronous WorkersMenjalankan tugas asynchronous latar belakang (kirim email, pemrosesan media) tanpa memblokir respons HTTP client.
- 20. Celery, Redis Queue & Pekerjaan Latar BelakangMemindahkan pekerjaan berat ke luar siklus permintaan: kapan BackgroundTasks cukup, kapan butuh Celery, penjadwalan berkala, dan penanganan kegagalan.
- 21. WebSocket & Komunikasi Real-timeMembangun fitur real-time seperti chat dan notifikasi dengan WebSocket, mengelola koneksi aktif, serta menyiarkan pesan lintas worker memakai Redis Pub/Sub.
- 22. Automated Testing dengan Pytest & TestClientMenuliskan unit test & integration test untuk rute API menggunakan framework Pytest dan Starlette TestClient.
- 23. File Storage & AWS S3 IntegrationMenyimpan gambar profil & berkas media postingan ke Object Storage AWS S3 menggunakan SDK Boto3.
- 24. Docker Containerization & Production DeploymentMenyusun Dockerfile ter-optimasi, docker-compose.yml dengan PostgreSQL, dan deployment ke cloud server.