Деректерді қалпына келтіру
Ресурсқа қатысты әрбір жазу — әрбір POST, PUT, PATCH және DELETE — генерацияның өзіне
өзгеріс ретінде емес, генерацияланған деректің үстіне қойылған шағын үстеме өзгеріс ретінде
сақталады. Бұл дегеніміз, олардың бәрін бір-ақ жерде жоюдың бір, толық, лезде орындалатын
операциясы бар: ресурсты қалпына келтіріңіз, сонда әрбір үстеме өзгеріс жойылады. Келесі оқу сол
схема, seed және санмен жаңа құрылған ресурстан алатыныңызбен — байт-байтына дейін — бірдей
деректерді қайта генерациялайды, өйткені генерация логикасының өзі бір қадам да жылжымаған.
Бұл неге қауіпсіз
Мұны нағыз дерекқормен, енгізілген жолдармен қамтамасыз етілген жалған API құралымен салыстырыңыз: онда "қалпына келтіру" әдетте seed скриптін қайта жегуді білдіреді, ал скрипт немесе оның кездейсоқ көзі сәл өзгерсе де, ол алдыңғысын дәл қайталайтынына ешқандай кепілдік жоқ. MockLab-тың қалпына келтіруінде мұндай тәуекел жоқ, өйткені генерацияланған негіз бастан- ақ тиілмеген — сіздің жазуларыңыз толығымен бөлек үстеме өзгеріс қабатында өмір сүрді. Сол қабатты жою — қалпына келтірудің өзі, қате қайта генерациялайтын ешнәрсе қалмайды.
Қайдан қалпына келтіруге болады
Қалпына келтіру — жария API тұтынушысы шақыратын нәрсе емес, жоба иесінің әрекеті — ол
қолданбаңыз шақыратын /m/... эндпоинтінде емес, сіздің басқару тақтасы сеансыңыздың артында
жатыр. Басқару тақтасындағы ресурс бетіңізден қалпына келтіру әрекетін пайдаланып, сол
ресурстың барлық үстеме өзгерістерін тазалаңыз. Ол жерде растау қадамы да, жартылай қалпына
келтіру де жоқ: бәрі бірден немесе ешнәрсе де жоқ, әдейі солай жасалған, өйткені таңдамалы
қалпына келтіру "бұл мен сақтағым келетін әдейі жасалған түзету" мен "бұл сынақ деректері"
дегенді ажырата білуі керек еді — API мұны білудің еш жолы жоқ айырмашылық.
Іс жүзінде не болады
Ішкі жағынан, қалпына келтіру ресурсқа тиесілі әрбір үстеме өзгеріс жолын жойып, оның ішкі
дерек нұсқасын арттырады — бұл дәл сол нұсқа нөмірі оқуларыңыз қызмет ететін жадтағы кэштің
кілті болып табылады. Дәл сол бір арту әрбір сервер процесіндегі сол ресурс үшін әрбір кэштелген
бетті жарамсыз етеді; кез келген жерден келетін келесі GET таза беттен қайта генерацияланып,
қайта кэштеледі.
Мұны қашан қолданасыз
Қалпына келтіру әзірлеу барысында ең пайдалы: сіз қолданбаңыздың UI арқылы ресурсты бір уақыт бойы түрткілеп жүрдіңіз — сынақ жазбалар жасадыңыз, кейбірін жойдыңыз, шеткі жағдайды тексеру үшін бағаларды түзеттіңіз — енді демонстрация, тестілеу немесе эндпоинтті біреуге тапсыру алдында қайта таза негізді қалайсыз. Генерация детерминистикалық болғандықтан, қалпына келтірілген ресурсты кейін шақырған кез келген адам дәл сол деректерді көреді, бұл белгілі бір күтілетін мәндерге қарсы тест немесе құжаттама жазуды жеңілдетеді.
Қалпына келтіруден кейін деректерді оқу
Ресурсты қалпына келтіруден кейін оқу дәл сол әрдайымғы эндпоинтті пайдаланады — 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>
</>
);
}