Elixir & Phoenix: Scalable Backend Development · Pelajaran

Paginasi, Pemfilteran & Pemberian Versi API

Jadikan API Phoenix mudah diskalakan dan dipelihara dengan paginasi kueri, pemfilteran fleksibel, serta strategi pemberian versi yang rapi.

Pelajaran 4 dari 413 langkah

Paginasi, Pemfilteran & Pemberian Versi API adalah pelajaran Elixir & Phoenix: Scalable Backend Development gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Elixir & Phoenix: Scalable Backend Development, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Elixir & Phoenix: Scalable Backend Development mencakup 4 pelajaran total.

Mengapa Paginasi Penting

Mengembalikan setiap rekaman dalam satu respons lambat dan menghabiskan banyak memori. Paginasi mengirim data dalam halaman-halaman yang mudah dikelola.

Paginasi Berbasis Offset

Pendekatan klasik menggunakan limit dan offset yang digerakkan oleh parameter kueri seperti ?page=2&per_page=20.

from(p in Post, limit: ^per_page, offset: ^((page - 1) * per_page))

Mengembalikan Metadata Halaman

Klien perlu mengetahui jumlah total. Sertakan metadata seperti halaman saat ini, ukuran halaman, dan jumlah total bersama data.

%{
  data: posts,
  meta: %{page: 2, per_page: 20, total: 137}
}

Kekurangan Offset

Offset yang besar menjadi lambat karena basis data tetap memindai baris yang dilewati, sementara baris yang bergeser di antara permintaan dapat menyebabkan duplikasi.

Paginasi Berbasis Kursor

Paginasi dengan kursor menggunakan nilai terakhir yang terlihat (sering kali id atau stempel waktu) untuk mengambil halaman berikutnya, sehingga tetap cepat dan stabil.

from(p in Post,
  where: p.id > ^cursor,
  order_by: [asc: p.id],
  limit: ^limit)

Memfilter Hasil

Biarkan klien mempersempit hasil dengan parameter kueri. Bangun kueri secara kondisional berdasarkan parameter yang tersedia.

def filter(query, %{"status" => status}) do
  from(q in query, where: q.status == ^status)
end
def filter(query, _), do: query

Menggabungkan Beberapa Filter

Gunakan reduce pada peta parameter untuk menerapkan setiap filter yang didukung, sehingga kueri tetap dapat dikomposisikan dan aman dari injeksi melalui pengikatan parameter.

Enum.reduce(params, base_query, fn
  {"author", a}, q -> from(p in q, where: p.author == ^a)
  _, q -> q
end)

Pengurutan

Terima parameter sort dan petakan ke daftar putih kolom yang diizinkan untuk mencegah pengurutan sembarang.

order = case params["sort"] do
  "newest" -> [desc: :inserted_at]
  _ -> [asc: :id]
end

Mengapa API Perlu Berversi?

Pembuatan versi memungkinkan Anda mengembangkan API tanpa merusak klien yang sudah ada saat Anda mengubah bentuk atau perilaku respons.

Pembuatan Versi pada Jalur URL

Strategi yang paling umum menempatkan versi di jalur, dengan cakupan yang ditentukan di perute.

scope "/api/v1", MyAppWeb.V1 do
  pipe_through :api
  resources "/posts", PostController
end

Pembuatan Versi Berbasis Header

Alternatifnya, pilih versi dari header Accept agar URL tetap stabil. Pilih ONE strategi dan terapkan secara konsisten.

# Accept: application/vnd.myapp.v2+json

Pemeriksaan Singkat

Uji pengetahuan Anda tentang penskalaan API.

Ringkasan

Anda membuat API yang dapat diskalakan dan tahan lama:

  • Gunakan paginasi dengan offset (sederhana) atau kursor (cepat, stabil)
  • Kembalikan metadata halaman bersama data
  • Terapkan filter yang dapat dikomposisikan dan terikat parameter, serta pengurutan berdasarkan daftar putih
  • Gunakan versi melalui jalur URL atau header Accept secara konsisten
Gratis untuk memulai

Belajar Elixir dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
12
Pelajaran
48

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Paginasi, Pemfilteran & Pemberian Versi API” gratis?

Ya — teks lengkap “Paginasi, Pemfilteran & Pemberian Versi API” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Elixir & Phoenix: Scalable Backend Development, upgrade ke CoddyKit PRO. Kursus Elixir & Phoenix: Scalable Backend Development mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Paginasi, Pemfilteran & Pemberian Versi API”?

Jadikan API Phoenix mudah diskalakan dan dipelihara dengan paginasi kueri, pemfilteran fleksibel, serta strategi pemberian versi yang rapi. Kamu berlatih Elixir & Phoenix: Scalable Backend Development dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Elixir & Phoenix: Scalable Backend Development?

Tidak diperlukan pengalaman sebelumnya. Elixir & Phoenix: Scalable Backend Development di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Paginasi, Pemfilteran & Pemberian Versi API” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Elixir & Phoenix: Scalable Backend Development ini?

Ya. Setiap pelajaran Elixir & Phoenix: Scalable Backend Development menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Prinsip dan Praktik Terbaik Rancangan API
  2. Menerapkan Titik Akhir API dan Serialisasi
  3. Strategi Autentikasi dan Otorisasi
  4. Paginasi, Pemfilteran & Pemberian Versi API
← Kembali ke Elixir & Phoenix: Scalable Backend Development