Qanday HTTP so'rov metodlarini bilasiz?

JuniorHTTP #http #rest

Savol

Qanday HTTP metodlari mavjud va ular bir-biridan nimasi bilan farq qiladi?

Qisqa javob

HTTP metodlari resursga nisbatan so'rovning niyatini bildiradi: GET — olish, POST — yaratish/amalni bajarish, PUT/PATCH — o'zgartirish, DELETE — o'chirish, HEAD/OPTIONS — xizmat metodlari.

Batafsil javob

  • GET — resursni olish. Server holatini o'zgartirmasligi kerak (xavfsiz metod), keshlanishi mumkin, parametrlar URL orqali uzatiladi.
  • POST — yangi resurs yaratish yoki boshqa metodlar bilan ifodalanmaydigan amalni bajarish. So'rov tanasi ixtiyoriy.
  • PUT — ma'lum URL bo'yicha resursni to'liq almashtirish (idempotent: bir xil ma'lumot bilan qayta chaqirish bir xil natija beradi).
  • PATCH — resursni qisman yangilash (idempotent bo'lishi shart emas).
  • DELETE — resursni o'chirish.
  • HEAD — GET kabi, lekin javob tanasisiz: resurs mavjudligini yoki sarlavhalarni tekshirish uchun ishlatiladi.
  • OPTIONS — resurs qaysi metodlarni qo'llab-quvvatlashini bilish uchun; brauzer uni "oddiy bo'lmagan" CORS so'rovlaridan oldin avtomatik preflight so'rov sifatida yuboradi.

Metodlarning muhim xususiyatlari:

MetodXavfsizIdempotentSo'rov tanasi
GET✅✅yo'q
POST❌❌ha
PUT❌✅ha
PATCH❌❌ha
DELETE❌✅odatda yo'q

Misol

// Foydalanuvchilar ro'yxatini olish
await fetch('/api/users')

// Foydalanuvchi yaratish
await fetch('/api/users', {
  method: 'POST',
  body: JSON.stringify({ name: 'Alice' })
})

// Foydalanuvchini to'liq almashtirish
await fetch('/api/users/1', {
  method: 'PUT',
  body: JSON.stringify({ name: 'Alice', age: 30 })
})

// Foydalanuvchini qisman yangilash
await fetch('/api/users/1', {
  method: 'PATCH',
  body: JSON.stringify({ age: 31 })
})

// Foydalanuvchini o'chirish
await fetch('/api/users/1', { method: 'DELETE' })

Qo'shimcha savollar

  • Nega GET so'rovida tana (body) bo'lmasligi kerak?
  • "Idempotentlik" oddiy so'z bilan nimani anglatadi?
  • Nega brauzer CORS so'rovidan oldin OPTIONS yuboradi?