Barcha darslar

Yuqori ยท 9/12

๐ŸŒ API'da JSON: kontrakt, xatolar, sahifalash

Javob tuzilmasi dizayni, xato formatlari, versiyalash va nomlash konvensiyalari.

API javobi โ€” bu mehmonga topshiriladigan uy. U bashorat qilinadigan bo'lishi kerak: mijoz kodi har safar bir xil tuzilmani kutadi.

Barqaror javob konverti
{
  "data": [
    { "id": "1", "nom": "Kitob" }
  ],
  "meta": { "sahifa": 1, "jami": 128, "sahifa_hajmi": 20 },
  "error": null
}
Xato formati (RFC 9457 ruhida)
{
  "type": "https://api.example.com/errors/validation",
  "title": "Validatsiya xatosi",
  "status": 422,
  "detail": "yosh maydoni manfiy bo'lishi mumkin emas",
  "errors": [
    { "field": "yosh", "code": "min", "message": "0 dan katta bo'lsin" }
  ]
}
QoidaNima uchun
snake_case yoki camelCase โ€” bitta uslubAralashtirish mijoz kodini buzadi
Sana ISO-8601 UTC"2026-08-04T16:10:00Z" โ€” noaniqlik yo'q
null vs maydonni tashlab ketishKelishib ol: null = bo'sh, yo'q = o'zgarmagan
Massiv doim massivBitta element bo'lsa ham obyektga aylantirma
ID stringKatta sonlar aniqligi buzilmasin
Yangi maydon qo'shish โ€” buzmaydiMaydon o'chirish/qayta nomlash โ€” buzadi

Content-Type

application/json; charset=utf-8. JSONL uchun application/x-ndjson. Xato javoblarda ham JSON qaytar โ€” HTML sahifa emas.

๐Ÿ›  Mashq: Sahifalangan javob yoz: data massivi + meta.

mashq.json
Uy mustahkam โ€” JSON to'g'ri โœ…

Tekshiruv testi

1. API'da sana qanday saqlanadi?

2. Qaysi o'zgarish mijozni buzmaydi?