Bosh sahifaga

Yozuv yaratish, yangilash va o‘chirish

MockLab faqat o‘qish uchun mock emas — har bir resurs haqiqiy yozish yo‘lini qo‘llab-quvvatlaydi. Yozishlar generatsiya qilingan ma’lumotning o‘zini o‘zgartirmaydi; har biri ustiga qo‘yiladigan kichik override sifatida saqlanadi — bu esa resursni qayta tiklashni xavfsiz va to‘liq qiladi.

Yozuv yaratish

Kolleksiya endpointiga JSON obyekt tanasi bilan POST yuboring. Server har doim idni o‘zi belgilaydi — tanangizda id bo‘lsa ham, u chiqarib tashlanib, haqiqiy id foydasiga ishlatiladi — va yaratilgan yozuvni 201 holati bilan qaytaradi.

curl -X POST https://mocklab.dev/m/demo7k2m9x/products \
  -H "Content-Type: application/json" \
  -d '{"title": "Desk lamp", "price": "$34.00", "inStock": true}'
const response = await fetch("https://mocklab.dev/m/demo7k2m9x/products", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ title: "Desk lamp", price: "$34.00", inStock: true }),
});
const created = await response.json(); // { id: "...", title: "Desk lamp", ... }

PUT bilan yozuvni almashtirish

/m/{project-key}/{resource-name}/{id} manziliga PUT yuborilsa, butun yozuv tanangiz bilan almashtiriladi — yubormagan har qanday maydon natijadan yo‘qoladi, xuddi haqiqiy REST API’ning PUT semantikasiga o‘xshab. To‘liq almashtirilgan yozuv bilan 200 qaytaradi.

await fetch(`https://mocklab.dev/m/demo7k2m9x/products/${id}`, {
  method: "PUT",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ title: "Desk lamp", price: "$29.00", inStock: false }),
});

PATCH bilan yozuvni yangilash

PATCH tanangizni yozuvning hozirgi qiymatiga — generatsiya qilingan yoki allaqachon override qilingan bo‘lishidan qat’i nazar — birlashtiradi, shuning uchun faqat yuborgan kalitlaringiz o‘zgaradi. "Bitta maydonni tahrirlash" formasi uchun deyarli har doim kerak bo‘ladigan aynan shu.

import { useMutation, useQueryClient } from "@tanstack/react-query";

function useUpdatePrice(productId) {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: (price) =>
      fetch(`https://mocklab.dev/m/demo7k2m9x/products/${productId}`, {
        method: "PATCH",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ price }),
      }).then((res) => res.json()),
    onSuccess: () => queryClient.invalidateQueries({ queryKey: ["products"] }),
  });
}

Yozuvni o‘chirish

Xuddi shu bitta-yozuv manziliga DELETE yuboring. Tanasiz 204 qaytaradi — yozuv endi ro‘yxat natijalarida yoki id bo‘yicha to‘g‘ridan-to‘g‘ri GETda ko‘rinmaydi.

await fetch(`https://mocklab.dev/m/demo7k2m9x/products/${id}`, { method: "DELETE" });

Nima tekshirilmaydi

Bu yozish endpointlarining hech biri tanangizni resursning maydon turlariga qarshi tekshirmaydi — mock API’ning butun mazmuni shundaki, faol rivojlanayotgan mijoz yuborgan har qanday shaklni, sxemani mukammal sinxron saqlashingizni talab qilmasdan qabul qiladi. Yagona talab — POST/PUT/PATCH uchun tananing JSON obyekt bo‘lishi. Sxemada mavjud bo‘lmagan maydonni yuborsangiz, u aynan yuborilganidek saqlanadi va qaytariladi; sxema belgilagan maydon uchun hech narsa yubormasangiz, PUTda u natijada shunchaki yo‘q bo‘ladi.

10 000 yozuvdan yuqorida bitta ogohlantirish

Bitta-yozuv GET/PUT/PATCH/DELETEsi faqat allaqachon override’ga ega yozuvlar uchun id bo‘yicha ishlaydi — bu POST orqali yaratilgan yoki kamida bir marta yozilgan oddiy generatsiya qilingan yozuv bo‘lishi mumkin. 10 000 dan ortiq yozuvga ega resursda, hech qachon tegilmagan oddiy generatsiya qilingan yozuvga tegishli id bu marshrutlarda 404 qaytaradi, chunki ixtiyoriy id qaysi indeksga tegishli ekanligini topish moslik topilguncha yozuvlarni generatsiya qilishni anglatadi — bu aynan 10 000 chegarasi oldini olmoqchi bo‘lgan skanerlash. To‘liq tushuntirish uchun Generatsiya qanday ishlaydi sahifasiga qarang.