Жазба жасау, жаңарту және жою
MockLab тек оқуға арналған имитация емес — әр ресурс нағыз жазу жолын қолдайды. Жазулар генерацияланған деректің өзін өзгертпейді; әрқайсысы негіздің үстіне қойылған шағын үстеме өзгеріс ретінде сақталады, бұл ресурсты қалпына келтіруді қауіпсіз әрі толық ететін нәрсе.
Жазба жасау
Жинақ эндпоинтіне JSON объектісі бар денемен POST жасаңыз. Сервер id мәнін әрдайым өзі
тағайындайды — денеңізде 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 арқылы жазбаны ауыстыру
/m/{project-key}/{resource-name}/{id} мекенжайына PUT жасау бүкіл жазбаны деніңізбен
ауыстырады — жібермеген кез келген өрісіңіз нәтижеден жоғалады, дәл нағыз 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" });Не тексерілмейді
Бұл жазу эндпоинттерінің ешқайсысы деніңізді ресурстың өріс түрлеріне қарсы тексермейді — жалған
API-дың бүкіл мәні дамудағы клиент жіберетін кез келген пішінді, схеманы алдын ала мұқият сай
етіп отырмай-ақ қабылдау. Жалғыз талап — POST/PUT/PATCH үшін дене JSON объектісі болуы
керек. Схемада жоқ өрісті жіберсеңіз, ол дәл сол күйінде сақталып, қайтарылады; PUT үшін
схемада анықталған өріске ештеңе жібермесеңіз, ол нәтижеде жай ғана болмайды.
10 000-нан жоғарыдағы бір ескерту
Id бойынша жеке жазбамен жұмыс істейтін GET/PUT/PATCH/DELETE тек үстеме өзгерісі бар
жазбалар үшін ғана жұмыс істейді — не POST арқылы жасалған, не сіз кем дегенде бір рет жазған
кәдімгі генерацияланған жазба. 10 000-нан көп жазбасы бар ресурста, ешқашан тиілмеген кәдімгі
генерацияланған жазбаның id-і бұл маршруттарда 404 қайтарады, өйткені кез келген id қай
индекске жататынын табу жазба сәйкес келгенше генерациялап отыруды білдірер еді — дәл 10 000
шегі болдырмауға арналған тарау. Толық түсіндірме үшін
Генерация қалай жұмыс істейді бетін қараңыз.