Башкы бетке

Түзүү, жаңылоо жана өчүрүү

MockLab — окуу гана мүмкүн болгон mock эмес — ар бир ресурс чыныгы жазуу жолун колдойт. Жазуулар генерацияланган маалыматтын өзүн өзгөртпөйт; ар бири үстүнө коюлган кичине оверрайд катары сакталат, бул ресурсту reset кылууну коопсуз жана толук кылат.

Жазуу түзүү

Топтом эндпоинтине JSON объект денеси менен POST жиберилет. Сервер ар дайым idди өзү дайындайт — денеңизде id болсо, ал чыныгысынын пайдасына четке кагылат — жана 201 статусу менен түзүлгөн жазууну кайтарат.

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 менен жазууну алмаштыруу

PUT /m/{project-key}/{resource-name}/{id} дарегине жиберилип, бүтүн жазууну денеңиз менен алмаштырат — жибербеген талааңыз натыйжадан жоголот, так чыныгы REST API'дин PUT семантикасы сыяктуу эле. Толук алмаштырылган жазуу менен 200 кайтарат.

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 менен жазууну жаңылоо

PATCH денеңизди жазуунун учурдагы маанисине бириктирет — генерацияланган же мурда оверрайддалган — ошондуктан сиз жиберген ачкычтар гана өзгөрөт. Бул "бир талааны түзөтүү" формасы үчүн дээрлик ар дайым керек болгон нерсе.

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"] }),
  });
}

Жазууну өчүрүү

Так ошол эле жалгыз жазуу URL'ун DELETE кылыңыз. Дене жок 204 кайтарат — жазуу мындан ары тизме натыйжаларында да, id боюнча түз GETде да көрүнбөйт.

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

Эмне текшерилбейт

Бул жазуу эндпоинттеринин бири да денеңизди ресурстун талаа түрлөрүнө карата текшербейт — mock API'дин бүт максаты — активдүү иштелип чыгып жаткан клиент жиберген каалаган формадагы маалыматты, схеманы мурда так шайкеш кармабай эле, кабыл алуу. Жалгыз талап — POST/PUT/ PATCH үчүн дене JSON объект болушу керек. Схемада жок талааны жибериңиз — ал так жиберилгендей сакталып, кайтарылат; схемада аныкталган талаа үчүн эч нерсе жибербесеңиз, PUT үчүн ал натыйжада жөн эле жок болот.

10 000ден жогору бир эскертүү

Жалгыз жазуу GET/PUT/PATCH/DELETE id боюнча оверрайды бар жазуулар үчүн гана иштейт — же POST аркылуу түзүлгөн, же кеминде бир жолу өзгөртүлгөн жөнөкөй генерацияланган жазуу. 10 000 жазуудан көп ресурста, эч качан тийбеген жөнөкөй генерацияланган жазуунун id'си бул маршруттарда 404 кайтарат, анткени каалаган id кайсы индекске таандык экенин табуу дал келгенге чейин жазууларды генерациялоону талап кылмак — так 10 000 чеги алдын алуучу сканирлөө. Толук түшүндүрмө үчүн Генерация кантип иштейт барагын караңыз.