Praktikum Pyramid Framework
Membuat aplikasi CRUD sederhana dengan Pyramid Framework dan PostgreSQL
Tujuan Praktikum
Setelah menyelesaikan praktikum ini, Kalian diharapkan mampu:
- Memahami konsep dasar Pyramid Framework dalam pengembangan web
- Menggunakan cookiecutter untuk membuat struktur proyek Pyramid
- Mengonfigurasi koneksi database PostgreSQL dengan SQLAlchemy
- Membuat model data menggunakan SQLAlchemy ORM
- Mengimplementasikan migrasi database dengan Alembic
- Membuat view dan route untuk operasi CRUD sederhana
- Mengembangkan aplikasi web CRUD pengelolaan data Mahasiswa
Pengenalan Pyramid Framework
Pyramid Framework
Pyramid adalah framework Python yang bersifat minimalis namun sangat fleksibel untuk pengembangan web. Berbeda dengan Django yang menganut filosofi "batteries included", Pyramid lebih mengutamakan fleksibilitas dengan pendekatan "pay only for what you eat".
Kelebihan Pyramid
| Aspek | Deskripsi |
|---|---|
| Fleksibilitas | Dapat digunakan untuk proyek kecil hingga besar |
| Modular | Komponen dapat ditambahkan sesuai kebutuhan |
| Konfigurasi Deklaratif | Route dan konfigurasi yang jelas dan terstruktur |
| Database Agnostic | Dapat bekerja dengan berbagai database |
| Skalabilitas | Mendukung pengembangan aplikasi yang dapat diskalakan |
| Template Engine | Mendukung Jinja2, Mako, dan Chameleon |
Pyramid vs Framework Lainnya
Pyramid terkadang dianggap berada di tengah-tengah antara micro-framework seperti Flask dan full-stack framework seperti Django. Pyramid memberikan fleksibilitas seperti Flask tetapi juga menyediakan komponen-komponen yang lebih terstruktur.
Alat dan Bahan
Untuk mengikuti praktikum ini, Kalian memerlukan:
- Python 3.7+: Pastikan Python versi terbaru sudah terpasang
- PostgreSQL: Database untuk menyimpan data
- Text Editor/IDE: VSCode, PyCharm, atau editor lainnya
- Command Line/Terminal: Untuk menjalankan perintah
- Git: Untuk version control (opsional)
Rekomendasi Setup PostgreSQL
Untuk memudahkan pengembangan, Kalian dapat menggunakan:
- PostgreSQL App (macOS): https://postgresapp.com/
- pgAdmin: Tool GUI untuk mengelola database PostgreSQL
- DBeaver: Database manager universal yang mendukung PostgreSQL
- Docker: Menjalankan PostgreSQL dalam container
Materi Praktikum
Setup Environment
Persiapan lingkungan dan membuat proyek dengan Cookiecutter
Database & Models
Konfigurasi PostgreSQL, membuat model, dan migrasi database
Views & Routes
Implementasi CRUD views dan konfigurasi routing
Testing & Assignment
Pengujian API dan tugas praktikum
Format Pengumpulan
Direktori GitHub
- Buat repository dengan format:
pemrograman_web_itera_[NIM] - Contoh:
pemrograman_web_itera_119140001
Struktur Folder
- Buat folder per pertemuan dengan format:
[NAMA]_[NIM]_pertemuan[X] - Contoh:
johndoe_119140001_pertemuan6 - Setiap folder berisi semua file praktikum dan tugas untuk pertemuan tersebut
Deadline Pengumpulan
- Deadline: 15 Mei 2025, 23:59 WIB
- Keterlambatan pengumpulan akan dikenakan pengurangan nilai sebesar 10% per hari
Tugas Praktikum
Aplikasi Manajemen Matakuliah dengan Pyramid
Buatlah aplikasi API sederhana untuk manajemen matakuliah berdasarkan apa yang telah Kalian pelajari dalam praktikum ini.
Tugas Praktikum
Ini adalah tugas mandiri yang harus dikerjakan berdasarkan materi praktikum yang telah dipelajari. Kalian perlu mengaplikasikan semua langkah yang telah diajarkan untuk membuat aplikasi manajemen matakuliah.
Persyaratan
Model Data
Buat model Matakuliah dengan atribut berikut:
| Atribut | Tipe | Deskripsi | Constraint |
|---|---|---|---|
| id | Integer | Primary key | Auto increment |
| kode_mk | Text | Kode mata kuliah | Unique, Not null |
| nama_mk | Text | Nama mata kuliah | Not null |
| sks | Integer | Jumlah SKS | Not null |
| semester | Integer | Semester pengambilan | Not null |
class Matakuliah(Base):
__tablename__ = 'matakuliah'
id = Column(Integer, primary_key=True)
kode_mk = Column(Text, unique=True, nullable=False)
nama_mk = Column(Text, nullable=False)
sks = Column(Integer, nullable=False)
semester = Column(Integer, nullable=False)
def to_dict(self):
return {
'id': self.id,
'kode_mk': self.kode_mk,
'nama_mk': self.nama_mk,
'sks': self.sks,
'semester': self.semester,
}API Endpoints
Implementasikan endpoint untuk operasi dasar:
| HTTP Method | URL Pattern | Deskripsi |
|---|---|---|
| GET | /api/matakuliah | Mendapatkan semua matakuliah |
| GET | /api/matakuliah/{id} | Mendapatkan detail satu matakuliah |
| POST | /api/matakuliah | Menambahkan matakuliah baru |
| PUT | /api/matakuliah/{id} | Mengupdate data matakuliah |
| DELETE | /api/matakuliah/{id} | Menghapus data matakuliah |
Penting
Jangan lupa menambahkan parameter request_method pada setiap route untuk memastikan routing berfungsi dengan benar!
Testing
Pastikan API berfungsi dengan baik:
- Jalankan migrasi database dengan Alembic
- Tambahkan data awal minimal 3 matakuliah
- Test semua endpoint dengan curl atau Postman
- Verifikasi response sesuai dengan yang diharapkan
Dokumentasi
Buat file README.md yang berisi:
- Deskripsi Proyek: Penjelasan singkat tentang aplikasi
- Cara Instalasi:
- Langkah membuat virtual environment
- Instalasi dependensi
- Konfigurasi database
- Cara Menjalankan:
- Menjalankan migrasi
- Menjalankan server
- API Endpoints: Dokumentasi semua endpoint dengan contoh request dan response
- Testing: Contoh perintah curl untuk testing setiap endpoint
Contoh Dokumentasi API
Contoh format dokumentasi:
## API Endpoints
### 1. Get All Matakuliah
**Request:**
```bash
curl -X GET http://localhost:6543/api/matakuliahResponse:
{
"matakuliahs": [
{
"id": 1,
"kode_mk": "IF101",
"nama_mk": "Algoritma dan Pemrograman",
"sks": 3,
"semester": 1
}
]
}Kriteria Penilaian
| Aspek | Bobot | Detail |
|---|---|---|
| Model Data | 30% | Model Matakuliah dengan atribut lengkap, validasi, dan method to_dict() |
| API Endpoints | 40% | Implementasi lengkap CRUD dengan validasi dan error handling |
| Dokumentasi dan Kerapian Kode | 30% | README.md lengkap, code comments, dan struktur kode yang rapi |
Langkah Pengerjaan
Tips Pengerjaan
- Gunakan kode dari praktikum sebagai dasar
- Ubah model dan view untuk menyesuaikan dengan matakuliah
- Ingat untuk menambahkan
request_methodpada route - Jalankan migrasi database sebelum menguji API
- Test setiap endpoint sebelum submit
