Menu
CoddyTech

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);
challenge icon

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.

  1. routes/tasks.js dosyasına POST /api/tasks için bir rota ekleyin (yönlendiricinin içinde bu yol '/' olur). JSON gövdesinden title değerini okur; örneğin { "title": "Order new chairs" }.
  2. Yeni görevi dört alanla oluşturun:
    • id: store.js dosyasındaki nextId() işlevinden alınır. Bunu tasks ile birlikte içe aktarın.
    • title: gövdeden alınır.
    • done: false.
    • createdAt: new Date().toISOString(), metin olarak geçerli saat.

    tasks dizisine ekleyin; böylece GET /api/tasks isteği de görevi gösterir.

  3. Durum kodu 201 ve yeni görevi JSON olarak döndürün. Location başlığını görevin kendi URL'sine ayarlayın: 4 numaralı görev için bu /api/tasks/4 olur. Yeni bir “Oyna” işleminde yanıt gövdesi şöyle görünür (createdAt değeri, isteği gönderdiğiniz andaki zamandır):
    { "id": 4, "title": "Order new chairs", "done": false, "createdAt": "2026-10-30T09:12:44.512Z" }
  4. Gövde içinde title yoksa, 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

Kendi başına pratik yap: Express playground