Pembaruan Parsial dengan PATCH
Termasuk bagian REST API dalam perjalanan Node.js di Coddy. Pelajaran 3 dari 25.
Menandai tugas sebagai selesai tidak berarti mengirim judulnya lagi. PATCH hanya membawa field yang berubah, dan server mempertahankan semua field lainnya seperti semula.
// PATCH /api/invoices/7 { "paid": true }
const { paid, amount } = req.body ?? {};
if (paid !== undefined) invoice.paid = paid;
if (amount !== undefined) invoice.amount = amount;
res.json(invoice);Uji setiap field dengan undefined, bukan dengan if (paid): false adalah nilai yang dapat dikirim client. Salin field satu per satu alih-alih menyebarkan req.body ke object, sehingga client tidak dapat mengubah id. Permintaan tanpa body membuat req.body bernilai undefined, dan itulah yang ditangani oleh ?? {}. Responsnya adalah 200 dengan seluruh invoice yang sudah diperbarui.
Tantangan
MudahPATCH /api/tasks/:idhanya mengubah kolom yang dikirim oleh body,titleataudone.- Responsnya adalah 200 dengan seluruh task.
- Id yang tidak dikenal menghasilkan respons 404 dengan
{ "error": "Task not found" }.
Kirim PATCH /api/tasks/2 dengan { "done": true }, lalu GET /api/tasks/2, kemudian PATCH yang sama ke /api/tasks/99.
Coba sendiri
import { Router } from 'express';
import { nextId, tasks } from '../store.js';
const router = Router();
router.get('/', (req, res) => {
res.json(tasks);
});
router.get('/:id', (req, res) => {
const task = tasks.find((t) => t.id === Number(req.params.id));
if (!task) {
return res.status(404).json({ error: 'Task not found' });
}
res.json(task);
});
router.post('/', (req, res) => {
const { title } = req.body ?? {};
if (!title) {
return res.status(400).json({ error: 'title is required' });
}
const task = { id: nextId(), title, done: false, createdAt: new Date().toISOString() };
tasks.push(task);
res.status(201).location(`/api/tasks/${task.id}`).json(task);
});
export default router;
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di REST API
1Sumber Daya dan Kata Kerja
Sumber Daya dan URLMembuat dengan POST4Peramban, Versi, dan Konfigurasi
Apa Itu OriginMengizinkan Origin LainCORSHalaman yang Memanggil APILatihan sendiri: Playground Express