Bosh sahifa Wiki request pipeline

request pipeline

Request pipeline — mijozdan kelgan HTTP so‘rov dastur ichida ketma-ket bosqichlardan o‘tib, HTTP javobga aylanish jarayonidir. Pipeline so‘rovni bitta controllerga bevosita uzatishdan oldin autentifikatsiya, jurnal yozish, marshrutlash va kiritmani tekshirish kabi umumiy vazifalarni tartibli bajaradi. Javob ham ko‘pincha shu zanjir bo‘ylab teskari yo‘nalishda qaytadi.

Asosiy bosqichlar

Aniq tartib framework va serverga bog‘liq, ammo odatiy veb-ilovada quyidagi qismlar uchraydi:

  1. server TCP ulanishi va HTTP xabarini qabul qiladi;
  2. host, usul, yo‘l, sarlavha va tana ajratiladi;
  3. proxy yoki xavfsizlik qatlami cheklovlarni tekshiradi;
  4. middlewarelar umumiy qayta ishlashni bajaradi;
  5. router so‘rovni endpoint bilan moslashtiradi;
  6. handler biznes mantiqini ishga tushiradi;
  7. natija serializatsiya qilinib HTTP javobga aylanadi;
  8. javob sarlavhalari va log yozuvlari yakunlanadi.

Har bir bosqich keyingisiga nazoratni uzatishi yoki javobni darhol qaytarib, zanjirni qisqa tutashi mumkin.

Middleware zanjiri

Middleware pipeline ichidagi qayta ishlovchi komponentdir. U so‘rovdan oldin kod bajaradi, keyingi komponentni chaqiradi va qaytgan javobni o‘zgartirishi mumkin. Masalan, autentifikatsiya middleware tokenni tekshirib, foydalanuvchi ma’lumotini request contextga qo‘shadi. Ruxsat bo‘lmasa, endpointga yetmasdan 401 yoki 403 javobi qaytariladi.

Tartib semantik jihatdan muhim. Exception handler xatoni ushlashi uchun xato berishi mumkin bo‘lgan komponentlarni tashqaridan o‘rashi kerak. CORS sarlavhasi xato javoblarida ham bo‘lishi talab qilinsa, u faqat muvaffaqiyatli endpointdan keyin ishlaydigan joyga qo‘yilmaydi.

Context va ma’lumot uzatish

Pipeline bosqichlari o‘rtasida request object yoki alohida context ishlatiladi. Unda correlation ID, foydalanuvchi identifikatori, til, deadline va tracing ma’lumoti saqlanishi mumkin. Context global o‘zgaruvchiga aylantirilsa, parallel so‘rovlar ma’lumoti aralashish xavfi tug‘iladi. Frameworklar odatda har so‘rovga alohida scope beradi.

Sinxron va asinxron bajarilish

Sinxron pipeline bir bosqich tugamaguncha keyingisini kutadi. Asinxron model tarmoq yoki baza I/O vaqtida workerning boshqa ish bajarishiga imkon beradi. Biroq CPUga og‘ir hisoblash asinxron sintaksisning o‘zi bilan tezlashmaydi; u alohida worker yoki hisoblash xizmatiga ajratilishi mumkin.

Kuzatuv va xatolar

Pipeline observability uchun qulay markaziy nuqta beradi. Kirish va chiqish vaqti o‘lchanib latency hisoblanadi, status code va route logga yoziladi, distributed trace davom ettiriladi. Maxfiy token, parol yoki shaxsiy ma’lumotni logga to‘liq chiqarish xavfsizlik buzilishiga olib kelishi mumkin.

Markaziy exception handler kutilgan domen xatosini mos status codega, noma’lum xatoni esa umumiy server javobiga aylantiradi. Ichki stack trace ishlab chiqarish javobida oshkor qilinmaydi, lekin diagnostika tizimida saqlanishi mumkin.

Oqimni sinash

Pipeline testi faqat endpointning yakuniy JSON natijasini tekshirish bilan cheklanmaydi. Ruxsatsiz so‘rov handlerga yetib bormasligi, correlation ID javobda saqlanishi va xato holatida ham xavfsizlik sarlavhalari qo‘shilishi tekshiriladi. Integration test haqiqiy middleware tartibini ishga tushiradi; unit test esa alohida komponentning keyingi handlerni qaysi shartda chaqirishini ko‘rsatadi. Yuklama testida pipelinega qo‘shilgan har qatlamning latency va xotira sarfiga ta’siri o‘lchanadi. Bir xil so‘rovni loglash, tracing va application kodida uch marta serializatsiya qilish ko‘rinmaydigan xarajat tug‘dirishi mumkin, shuning uchun umumiy yo‘l profil qilinadi.

Pipeline tartibi konfiguratsiya yoki kod reviewda ko‘rinadigan shaklda saqlanadi. Dinamik ro‘yxatdan o‘tish tartibi muhitga qarab o‘zgarsa, bir xil so‘rov turli deployda boshqa qatlamlardan o‘tishi mumkin.

Bog‘liq tushunchalar

HTTP, middleware, routing, controller, request context, authentication, observability