Menu
CoddyTech

الإنشاء باستخدام POST

جزء من قسم واجهات REST API في رحلة Node.js على Coddy. الدرس 2 من 18.

يحتاج العميل الذي يضيف مهمةً إلى معرفة مكان وجود المهمة الجديدة. يرسل المورد الجديد إلى عنوان URL الخاص بالقائمة باستخدام POST، ويرد الخادم بالحالة 201 Created مع المورد وترويسة Location التي تحدد عنوان URL الخاص به.

POST /api/events   { "name": "Launch party" }

201 Created
Location: /api/events/12
{ "id": 12, "name": "Launch party" }

يختار الخادم المعرّف، لذا لا يمكن لعميلين المطالبة بالمعرّف نفسه أبدًا. باستخدام ترويسة Location، يمكن للعميل جلب الحدث الجديد دون إنشاء عنوان URL بنفسه. تضبط res.location(path) تلك الترويسة، ويمكن ربطها مثل res.status:

res.status(201).location(`/api/events/${event.id}`).json(event);
challenge icon

التحدي

سهل
  • يردّ POST /api/tasks مع { "title" } بالحالة 201 مع المهمة الجديدة: id من nextId() في store.js، وdone: false، وcreatedAt من new Date().toISOString().
  • يضبط Location على /api/tasks/<id>.
  • في حال عدم وجود title: الحالة 400.

أرسل { "title": "Order new chairs" }، ثم أجرِ طلب GET إلى المسار Location، ثم أرسل POST مع {}.

جرّب بنفسك

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