POST — HTTP protokolida serverga ma’lumot yuborish yoki server tomonida amal boshlash uchun ishlatiladigan so‘rov metodi. U HTML forma jo‘natish, API orqali yangi yozuv yaratish, fayl yuklash yoki hisoblash jarayonini ishga tushirishda qo‘llanadi. POSTning aniq ma’nosi endpoint tomonidan belgilanadi; HTTP standarti uning resursga qanday ta’sir qilishini ilova nomidan belgilab bermaydi.
So‘rov tuzilishi
POST so‘rovi request line, headerlar va ixtiyoriy bodydan iborat. Request line metod, URI va HTTP versiyasini saqlaydi. Content-Type body qanday formatda yozilganini bildiradi. APIlarda application/json, oddiy formalarda application/x-www-form-urlencoded, fayl va aralash maydonlarda multipart/form-data keng ishlatiladi. Content-Length body hajmini baytlarda ko‘rsatishi mumkin.
POST /articles HTTP/1.1
Host: uzbekdevs.uz
Content-Type: application/json
{"title":"HTTP metodlari"}
Server so‘rovni qabul qilib, autentifikatsiya, ruxsat va ma’lumot formatini tekshiradi. Yangi resurs yaratilsa odatda 201 Created qaytariladi va Location headerida yangi resurs URI si berilishi mumkin. Amal muvaffaqiyatli bajarilib, alohida resurs yaratilmasa 200 OK yoki javob bodysiz 204 No Content ishlatiladi. Noto‘g‘ri kiritma uchun 400 Bad Request, ruxsat muammolari uchun 401 yoki 403 qaytarilishi mumkin.
Idempotentlik
HTTP semantikasida POST idempotent metod hisoblanmaydi. Bir xil so‘rovni ikki marta yuborish ikki xil resurs yoki takroriy operatsiya hosil qilishi mumkin. Tarmoq uzilganda client javobni olmasdan qoladi va so‘rov serverda bajarilgan-bajarilmaganini bilmasligi mumkin. To‘lov yoki buyurtma kabi operatsiyalarda client yaratgan idempotency key serverga takroriy so‘rovni tanishga yordam beradi.
POST cacheable bo‘lishi mumkin, lekin amaliy cachelar uni faqat aniq cache headerlari mavjud bo‘lsa saqlaydi. O‘qish amallari uchun odatda GET ishlatiladi, chunki GET safe va idempotent semantikaga ega hamda cache infratuzilmasi bilan tabiiyroq ishlaydi.
POST va boshqa metodlar
PUT ko‘rsatilgan URI dagi resurs holatini yaratish yoki to‘liq almashtirish uchun ishlatiladi va idempotent hisoblanadi. PATCH resursga qisman o‘zgarish qo‘llaydi; uning idempotentligi patch formatiga va endpoint semantikasiga bog‘liq. POST esa ko‘pincha server yangi URI tanlaydigan yaratish amali yoki resursga to‘g‘ridan-to‘g‘ri tenglashtirib bo‘lmaydigan buyruqlar uchun tanlanadi.
Xavfsizlik
POST ma’lumotni URL query qismidan yashiradi, lekin bodyni avtomatik shifrlamaydi. Maxfiy ma’lumot HTTPS orqali uzatiladi. Brauzer cookie asosidagi sessiyadan foydalansa, holatni o‘zgartiruvchi POST endpointlari CSRFdan himoyalanishi kerak. Server body hajmini cheklaydi, formatni tekshiradi va foydalanuvchi kiritmasini SQL yoki buyruq matniga nazoratsiz qo‘shmaydi.
Fayl yuklash
multipart/form-data bodyni boundary bilan ajratilgan qismlarga bo‘ladi. Har qism o‘z headerlari va mazmuniga ega; shu yo‘l bilan matn maydoni va binar fayl bitta so‘rovda yuboriladi. Server client bergan fayl nomi va MIME turiga to‘liq ishonmaydi. Hajm, ruxsat etilgan format, saqlash manzili va fayl mazmuni tekshiriladi; yuklangan fayl bajariladigan web katalogga nazoratsiz yozilmaydi.
Katta fayl reverse proxy va ilova serveridagi body limitlariga ham bo‘ysunadi.
Bog‘liq tushunchalar
HTTP, GET, PUT, PATCH, request body, status code, idempotency