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.