POST ile Oluşturma
Coddy'nin Node.js Journey'sinin REST API'leri bölümünün bir parçası. Ders 2 / 25.
Görev ekleyen bir istemcinin, yeni görevin nerede bulunduğunu bilmesi gerekir. Yeni kaynağı, POST kullanarak listenin URL'sine gönderir ve sunucu, kaynağı ve URL'sini belirten bir Location başlığını içeren 201 Oluşturuldu yanıtını verir.
POST /api/events { "name": "Launch party" }
201 Created
Location: /api/events/12
{ "id": 12, "name": "Launch party" }Sunucu id değerini belirler; böylece iki istemci aynı değeri hiçbir zaman sahiplenemez. Location başlığı sayesinde istemci, URL'yi kendisi oluşturmadan yeni etkinliği getirebilir. res.location(path) bu başlığı ayarlar ve res.status gibi zincirleme kullanılabilir:
res.status(201).location(`/api/events/${event.id}`).json(event);Görev
Kolayİstemcilerin görev ekleyebilmesi gerekir. Bir görev oluşturan ve yeni görevin nerede olduğunu istemciye bildiren bir POST rotası ekleyin.
routes/tasks.jsdosyasınaPOST /api/tasksiçin bir rota ekleyin (yönlendiricinin içinde bu yol'/'olur). JSON gövdesindentitledeğerini okur; örneğin{ "title": "Order new chairs" }.- Yeni görevi dört alanla oluşturun:
id:store.jsdosyasındakinextId()işlevinden alınır. Bunutasksile birlikte içe aktarın.title: gövdeden alınır.done:false.createdAt:new Date().toISOString(), metin olarak geçerli saat.
tasksdizisine ekleyin; böyleceGET /api/tasksisteği de görevi gösterir. - Durum kodu 201 ve yeni görevi JSON olarak döndürün.
Locationbaşlığını görevin kendi URL'sine ayarlayın: 4 numaralı görev için bu/api/tasks/4olur. Yeni bir “Oyna” işleminde yanıt gövdesi şöyle görünür (createdAtdeğeri, isteği gönderdiğiniz andaki zamandır):{ "id": 4, "title": "Order new chairs", "done": false, "createdAt": "2026-10-30T09:12:44.512Z" } - Gövde içinde
titleyoksa, 400 durum koduyla{ "error": "title is required" }döndürün ve listeye hiçbir şey eklemeyin.
Deneyin: POST'u, /api/tasks yolunu ve { "title": "Order new chairs" } gövdesini seçin. 201 kodunu ve yukarıdaki görevi id değeri 4 olarak görmelisiniz; yanıtın Headers sekmesinde Location: /api/tasks/4 görünür. GET /api/tasks/4 isteğini gönderin: aynı görev yanıt olarak gelir. Ardından {} gövdesini /api/tasks adresine POST edin: hata ile birlikte 400 alırsınız ve reddedilen POST hiçbir şey eklemediği için GET /api/tasks hâlâ 4 görev listeler.
Kendin dene
import { Router } from 'express';
import { 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);
});
export default router;
REST API'leri bölümündeki tüm dersler
1Kaynaklar ve Fiiller
Kaynaklar ve URL'lerPOST ile Oluşturma4Tarayıcılar, Sürümler ve Yapılandırma
Origin NedirBaşka Bir Origin'e İzin VermeCORSAPI'yi Çağıran Bir SayfaKendi başına pratik yap: Express playground