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—GETkabi, 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:
| Metod | Xavfsiz | Idempotent | So'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
GETso'rovida tana (body) bo'lmasligi kerak? - "Idempotentlik" oddiy so'z bilan nimani anglatadi?
- Nega brauzer CORS so'rovidan oldin
OPTIONSyuboradi?