Сохтан, навсозӣ ва нест кардан
MockLab на танҳо барои хониш аст — ҳар захира роҳи воқеии навиштанро дастгирӣ мекунад. Навиштанҳо худи додаҳои сохташуда-ро тағйир намедиҳанд; ҳар кадом ҳамчун лояи хурд болои он нигоҳ дошта мешавад, ки маҳз ҳамин аз нав танзим кардани захира-ро бехатар ва пурра месозад.
Сохтани сабт
Ба эндпоинти коллексия бо бадани объекти 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} тамоми сабтро бо баданатон иваз мекунад — ҳар
майдоне, ки нафиристед, аз натиҷа нест мешавад, айнан ба монанди семантикаи PUT-и API-и
воқеии REST. 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-ро бидуни бадан бармегардонад — сабт дигар на
дар натиҷаҳои рӯйхат ва на дар GET-и мустақим бо id пайдо намешавад.
await fetch(`https://mocklab.dev/m/demo7k2m9x/products/${id}`, { method: "DELETE" });Чӣ санҷида намешавад
Ҳеҷ кадоме аз ин эндпоинтҳои навиштан баданатонро бо навъҳои майдони захира санҷиш намекунад —
тамоми маънии API-и сохта қабул кардани ҳар шаклест, ки клиенти дар ҳоли рушд мефиристад, бидуни
он ки шумо аввал схемаро комилан ҳамоҳанг нигоҳ доред. Талаботи ягона ин аст, ки бадан барои
POST/PUT/PATCH объекти JSON бошад. Майдоне фиристед, ки дар схема нест — он айнан ҳамон
тавре ки фиристодед нигоҳ дошта ва бармегардонда мешавад; барои майдоне, ки схема муайян
кардааст, чизе нафиристед — барои PUT, он танҳо аз натиҷа ғоиб мешавад.
Як огоҳӣ боло аз 10,000 сабт
GET/PUT/PATCH/DELETE-и як сабт танҳо бо id барои сабтҳое кор мекунанд, ки аллакай
тағйирот доранд — ё тавассути POST сохташуда, ё сабти оддии сохташудае, ки шумо аллакай ҳадди
ақал як бор навиштаед. Дар захирае бо зиёда аз 10,000 сабт, id-и мутааллиқ ба сабти оддии
сохташуда, ки ҳеҷ гоҳ дастрас нашудааст, дар ин роҳҳо 404 бармегардонад, зеро ёфтани он ки
кадом индекс ба id-и дилхоҳ мутааллиқ аст, маънои сохтани сабтҳоро то пайдо шудани мувофиқат
дорад — маҳз он сканеро, ки ҳадди 10,000 барои пешгирии он вуҷуд дорад. Барои шарҳи пурра
Тарзи кори сохтан-ро бинед.