Paginasi, Pemfilteran & Pemberian Versi API
Jadikan API Phoenix mudah diskalakan dan dipelihara dengan paginasi kueri, pemfilteran fleksibel, serta strategi pemberian versi yang rapi.
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: queryMenggabungkan 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]
endMengapa 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
endPembuatan 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+jsonPemeriksaan 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
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
- Prinsip dan Praktik Terbaik Rancangan API
- Menerapkan Titik Akhir API dan Serialisasi
- Strategi Autentikasi dan Otorisasi
- Paginasi, Pemfilteran & Pemberian Versi API