Menghubungkan aplikasi ke data
Diperkenalkan| English | Makna |
|---|---|
| parameterised query/ˌpærəˈmetəraɪzd ˈkwɪərɪ/ | query terparameterisasi |
ID yang valid tetap dapat meminta data pribadi
- ID mahasiswa dapat berupa bilangan bulat yang valid dan tetap milik orang lain. Validasi input saja tidak boleh membuka daftar kursus pribadi.
- Untuk rute ini, mahasiswa yang terautentikasi hanya boleh membaca daftar mereka sendiri. Identifikasi pemanggil dan terapkan kebijakan tersebut sebelum mengambil baris pribadi.
ID siswa yang dikirim memiliki tipe yang benar. Apa yang masih harus dicek untuk pencarian pribadi?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bentuk yang benar tidak menjamin akses.
Ambil hanya baris dan bidang yang diizinkan
- Kueri terparameter mengikat ID mahasiswa yang diizinkan sebagai data. Pilih hanya bidang yang dibutuhkan antarmuka, seperti ID kursus dan judul.
- Jangan unduh rekaman pribadi untuk setiap mahasiswa dan sembunyikan yang tidak diinginkan di browser. Penerima dapat memeriksa respons penuh.
Mengapa rekaman pribadi untuk setiap siswa tidak boleh dikirim dan hanya disembunyikan oleh penyaring browser?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Terapkan akses data pribadi di server sebelum mengembalikan baris.
Tentukan respons kosong dan ditolak
- Dalam kontrak ini, mahasiswa yang diizinkan tanpa kursus menerima 200 dan
[]. Sumber daya yang tidak ada atau pemanggil yang ditolak mengikuti kebijakan API yang disepakati. - Beberapa kebijakan menggunakan 404 untuk menghindari pengungkapan keberadaan pribadi. Pertahankan kebijakan itu secara konsisten; jangan gunakan respons sukses untuk menutupi kegagalan database yang tak terduga.
Di bawah kontrak layanan ini, seorang siswa yang diizinkan ada tetapi tidak memiliki mata kuliah. Respons mana yang sesuai?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Daftar kosong yang berhasil adalah hasil yang terdefinisi, bukan kegagalan database.
Tampilkan respons tanpa membingungkan state
- Pada keberhasilan, tampilkan judul kursus yang dipilih sebagai teks. Tampilkan "Belum ada kursus" hanya setelah respons kosong yang berhasil.
- Saat loading, tunjukkan bahwa permintaan sedang diproses. Pada kegagalan, jelaskan bahwa daftar tidak dapat dimuat dan tawarkan upaya ulang yang sesuai; jangan klaim daftar tersebut kosong.
Tulis pesan terpisah untuk daftar kosong yang berhasil dan permintaan yang gagal.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
"Belum ada kursus" berbeda dengan "Gagal memuat kursus. Coba lagi."
Sesuaikan kemajuan respons dengan tampilan.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Tampilkan hanya apa yang didukung oleh hasil pengamatan.
Tangani perubahan tanpa menyimpannya separuh
- Penulisan yang melibatkan beberapa perubahan database terkait mungkin memerlukan transaksi: komit perubahan yang dimaksud bersama-sama atau rollback pada kegagalan.
- Validasi dan otorisasi penulisan secara independen. Pembacaan sukses sebelumnya tidak mengotorisasi setiap perubahan selanjutnya atau membuat nilai dropdown aman untuk ditempel ke dalam SQL.
Nilai dropdown aman disisipkan ke dalam SQL karena pengguna tidak dapat mengirim nilai lain.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Caller dapat mengirim permintaan yang diubah. Ikat nilainya dan validasi di server.
Penulisan terkait mungkin memerlukan transaksi agar kegagalan tidak meninggalkan sebagian perubahan yang dituju tersimpan.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Sebuah transaksi dapat mengcommit kelompok yang dituju atau membatalkannya; validasi dan otorisasi tetap diperlukan.
Tinjau perjalanan izin penuh
- Jejak identitas dan izin → input valid → pencarian terparameter → respons terdefinisi → tampilan jujur. Uji akses yang ditolak sebelum memeriksa tampilan.
- Gunakan fixture untuk daftar biasa, daftar kosong, dan permintaan gagal. Konfirmasi bahwa bidang pribadi dan baris mahasiswa lain absent dari respons yang diizinkan.
Kueri yang benar adalah bagian dari rute yang benar. Pemanggil, data yang diizinkan, kontrak respons, dan state terlihat juga harus seragam.
Urutkan alur kerja daftar kursus yang diizinkan ini.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Pemeriksaan server mendahului pengambilan dan pengiriman.