Bosh sahifaga

Ma’lumotlarni qayta tiklash

Resursga qarshi har bir yozish — har bir POST, PUT, PATCH va DELETE — generatsiya qilingan ma’lumot ustiga qo‘yiladigan kichik override sifatida saqlanadi, hech qachon generatsiyaning o‘ziga o‘zgartirish sifatida emas. Bu shuni anglatadiki, ularning barchasini bekor qilish yagona, to‘liq, tezkor amal: resursni qayta tiklang, va har bir override o‘chiriladi. Keyingi o‘qish xuddi shu sxema, seed va yozuvlar soniga ega yangi resursdan olishingiz mumkin bo‘lgan ma’lumotni qayta generatsiya qiladi — bayt-baytiga bir xil, chunki generatsiya mantig‘i hech qachon o‘zgarmagan.

Bu nima uchun xavfsiz

Buni haqiqiy ma’lumotlar bazasiga yozilgan qatorlarga tayangan soxta API vositasi bilan solishtiring: u yerda "qayta tiklash" odatda seed skriptini qayta ishga tushirishni anglatadi, va agar skript yoki uning tasodifiylik manbai bir oz o‘zgargan bo‘lsa, u aynan avvalgisini takrorlashiga hech qanday kafolat yo‘q. MockLabning qayta tiklashida bunday xavf yo‘q, chunki generatsiya qilingan asosga umuman tegilmagan — yozishlaringiz butunlay alohida override qatlamida yashagan. O‘sha qatlamni o‘chirish — bu qayta tiklashning o‘zi, noto‘g‘ri qayta generatsiya qilinadigan hech narsa qolmaydi.

Qayerdan qayta tiklash kerak

Qayta tiklash — loyiha egasining amali, umumiy API iste’molchisi chaqiradigan narsa emas — u /m/... endpointingiz emas, balki boshqaruv paneli sessiyangiz ortida yashaydi. Boshqaruv panelidagi resursingiz sahifasidan, o‘sha resurs uchun barcha override’larni tozalash uchun qayta tiklash amalidan foydalaning. Atrofida skript yozadigan tasdiqlash bosqichi yo‘q va qisman qayta tiklash yo‘q: bu, dizayn bo‘yicha, hammasi yoki hech narsa, chunki tanlab qayta tiklash "bu men saqlab qolmoqchi bo‘lgan atayin qilingan tahrir" bilan "bu sinov ma’lumoti" o‘rtasidagi farqni bilishi kerak bo‘lar edi — API buni bilishning iloji yo‘q.

Aslida nima sodir bo‘ladi

Qopqoq ostida, qayta tiklash resursga tegishli har bir override qatorini o‘chiradi va uning ichki ma’lumot versiyasini oshiradi — bu xuddi o‘qishlaringiz xizmat qiladigan xotiradagi keshning kalitidagi versiya raqami. O‘sha yagona oshirish har qanday server jarayonida o‘sha resurs uchun har bir keshlangan sahifani bekor qiladi; keyingi GET, qayerdan bo‘lmasin, toza holatdan qayta generatsiya qiladi va qayta keshlaydi.

Buni qachon ishlatasiz

Qayta tiklash rivojlanish jarayonida eng foydali: ilovangizning interfeysi orqali resursni titkilab ko‘rgansiz — sinov yozuvlarini yaratgansiz, bir nechtasini o‘chirgansiz, chekka holatni tekshirish uchun narxlarni patch qilgansiz — va demo qilishdan, sinovdan o‘tkazishdan yoki endpointni boshqasiga topshirishdan oldin yana toza asosga ega bo‘lmoqchisiz. Generatsiya deterministik bo‘lgani uchun, qayta tiklangan resursga keyinroq murojaat qilgan har kim aynan bir xil ma’lumotni ko‘radi — bu esa belgilangan kutilgan qiymatlarga qarshi sinov yoki hujjat yozishni osonlashtiradi.

Qayta tiklashdan keyin ma’lumot o‘qish

Qayta tiklashdan keyin resursni o‘qish har doimgidek xuddi shu endpointdan foydalanadi — manzil yoki javob shaklida hech narsa o‘zgarmaydi:

const response = await fetch("https://mocklab.dev/m/demo7k2m9x/products");
const products = await response.json();
// Identical to a fresh resource with the same schema, seed and count.
import { useQuery, useQueryClient } from "@tanstack/react-query";

function ProductList() {
  const queryClient = useQueryClient();
  const { data: products } = useQuery({
    queryKey: ["products"],
    queryFn: () => fetch("https://mocklab.dev/m/demo7k2m9x/products").then((res) => res.json()),
  });

  // After resetting from the dashboard, invalidate the cached query so the
  // next render reflects the clean baseline instead of stale overridden data.
  const refetchAfterReset = () => queryClient.invalidateQueries({ queryKey: ["products"] });

  return (
    <>
      <button onClick={refetchAfterReset}>Refresh</button>
      <ul>
        {products?.map((p) => (
          <li key={p.id}>{p.title}</li>
        ))}
      </ul>
    </>
  );
}