Башкы бетке

Маалыматты reset кылуу

Ресурска карата ар бир жазуу — ар бир POST, PUT, PATCH жана DELETE — генерацияланган маалыматтын үстүнө коюлган кичине оверрайд катары сакталат, генерациянын өзүнө өзгөртүү катары эч качан эмес. Бул дегеним, алардын баарын жокко чыгаруу бир, толук, ыкчам операция: ресурсту reset кылыңыз, ошондо ар бир оверрайд өчүрүлөт. Кийинки окуу так ошол эле схема, seed жана count менен жаңы ресурстан алат турган маалыматты кайра генерациялайт — байт-байтка чейин бирдей, анткени генерация логикасынын эч бир бөлүгү эч качан жылган эмес.

Бул эмне үчүн коопсуз

Муну киргизилген саптардын чыныгы маалымат базасынан турган жасалма API куралы менен салыштырыңыз: анда "reset" адатта seed скриптин кайра иштетүү дегенди билдирет, жана скрипт же анын кокустук булагы бир аз өзгөрсө да, ал мурункусун так кайра чыгарат деген кепилдик жок. MockLabдин reset'инде мындай тобокелдик жок, анткени генерацияланган негиз баштан эле такыр тийилген эмес — жазууларыңыз толугу менен өзүнчө оверрайд катмарында жашаган. Ошол катмарды өчүрүү — так reset'тин өзү, туура эмес кайра генерациялоо коркунучу жок.

Кайдан reset кылуу керек

Reset кылуу — долбоордун ээсинин аракети, ачык API колдонуучусу чакырган нерсе эмес — ал колдонмоңуз чакырган /m/... эндпоинтинде эмес, дашборд сессияңыздын артында жашайт. Дашборддогу ресурсуңуздун барагынан, ошол ресурстун бардык оверрайддарын тазалоо үчүн reset аракетин колдонуңуз. Аны айланып өтө турган ырастоо кадамы жок, жарым-жартылай reset да жок: ал атайылап баары-же-эч нерсе, анткени тандамалуу reset "бул мен сактагым келген атайылап жасалган өзгөртүү" менен "бул сынак маалыматы болчу" дегенди айырмалашы керек эле, ал эми API муну билүүнүн эч жолу жок.

Чынында эмне болот

Ички жагынан, reset кылуу ресурска таандык ар бир оверрайд сабын өчүрөт жана анын ички дайындар версиясын жогорулатат — окууларыңыз тейленген in-memory кэшти ачкычтаган так ошол эле версия номери. Ошол бир жолку көбөйтүү — ошол ресурс үчүн ар бир сервер процессиндеги ар бир кэштелген баракчаны жараксыз кылган нерсе; кайдан болбосун кийинки эле GET таза абалдан кайра генерацияланып, кайра кэштелет.

Муну качан колдоносуз

Reset кылуу иштеп чыгуунун ортосунда эң пайдалуу: колдонмоңуздун UI'си аркылуу ресурс менен чала-була иштедиңиз — сынак жазууларды түзүп, бирин-экин өчүрүп, чектик учурду текшерүү үчүн баа өзгөрттүңүз — жана демо, сынак же эндпоинтти башка бирөөгө берерден мурун таза негизге кайра кайтууну каалайсыз. Генерация детерминдүү болгондуктан, кийин reset кылынган ресурска кайрылган ар бир адам так ошол эле маалыматты көрөт, бул белгилүү бир күтүлгөн маанилерге карата сынактарды же документтерди жазууну оңойлотот.

Reset'тен кийин маалыматты окуу

Reset'тен кийин ресурсту окуу так ошол эле эндпоинтти колдонот — URL же жооптун формасы жөнүндө эч нерсе өзгөрбөйт:

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>
    </>
  );
}