Endpoint — tarmoq orqali murojaat qilinadigan xizmat yoki API interfeysining aniq kirish nuqtasidir. Veb-APIda endpoint ko‘pincha HTTP method va URL path kombinatsiyasi bilan belgilanadi, masalan GET /articles/{id}. Bir xil pathdagi GET va DELETE turli amal bo‘lgani uchun alohida endpoint sifatida qaraladi.
Endpoint tarkibi
URL scheme, host, port, path va query qismlaridan tuziladi. Route template path parametrlarini aniqlaydi. Header autentifikatsiya, content negotiation va tracing ma’lumotini olib yuradi. Body odatda POST, PUT yoki PATCH orqali resurs ma’lumotini yuboradi.
GET /api/articles/42?lang=uz HTTP/1.1
Host: example.com
Accept: application/json
Bu so‘rovda /api/articles/42 path, 42 identifikator, lang=uz query parametridir. Accept client qabul qiladigan formatni bildiradi.
Resurs va amal
REST uslubida endpoint nomi ko‘pincha fe’l emas, resursni ifodalaydi. HTTP method amal semantikasini beradi: GET o‘qiydi, POST yangi jarayon yoki resurs yaratadi, PUT to‘liq almashtiradi, PATCH qisman o‘zgartiradi, DELETE olib tashlaydi. Aniq semantika API shartnomasida hujjatlashtiriladi.
Safe method server holatini o‘zgartirmasligi kutiladi. Idempotent amal bir xil so‘rov takrorlanganda yakuniy holatni bir marta bajarilgandek saqlaydi. Tarmoq retrylari sabab bu xususiyat muhim. To‘lov yaratish kabi POST uchun idempotency key takroriy operatsiyani oldini olishi mumkin.
Kiritma va javob
Endpoint path, query, header va body qiymatlarini schema bo‘yicha tekshiradi. Sintaktik validatsiyadan keyin authorization aynan so‘ralgan obyektga ruxsatni tekshiradi. Faqat foydalanuvchi tizimga kirgani boshqa foydalanuvchining resursiga kirish huquqini bermaydi.
Javob status code, header va bodydan iborat. 200 muvaffaqiyatli natija, 201 yaratilgan resurs, 204 bodysiz muvaffaqiyatni bildiradi. 400 noto‘g‘ri so‘rov, 401 autentifikatsiya talabini, 403 taqiqni, 404 topilmagan resursni ifodalaydi. Xato bodysi barqaror code va tushunarli maydonlar bilan beriladi.
Versiyalash va moslik
Endpoint path, header yoki media type orqali versiyalanishi mumkin. Orqaga mos o‘zgarish yangi optional maydon qo‘shishi mumkin, ammo maydon turini o‘zgartirish eski clientni buzadi. Mobile clientlar sekin yangilangani uchun eski endpointni darhol o‘chirish amaliy emas. Deprecation muddati va kuzatuv iste’molchilarni ko‘chirishga yordam beradi.
Kuzatuv va himoya
Metrikalar route template bo‘yicha yig‘iladi; haqiqiy identifikator labelga qo‘yilsa cardinality oshadi. Rate limit endpoint narxi va foydalanuvchi identifikatoriga qarab belgilanadi. Timeout, request size, audit va trace ID ishlab chiqarish xatti-harakatini boshqaradi.
Pagination va kolleksiya
Ko‘p obyekt qaytaradigan endpoint natijani page yoki cursor bilan bo‘ladi. Offset pagination sodda, ammo yangi yozuvlar qo‘shilganda bir obyekt takror yoki o‘tkazib yuborilishi mumkin va katta offset databasega qimmat tushadi. Cursor pagination barqaror sort keydan keyingi pozitsiyani kodlaydi. Cursor client o‘zgartira olmaydigan tarzda imzolanishi yoki server tomonidan tekshirilishi mumkin. Javobda keyingi cursor, limit va zarur metadata beriladi. Cheksiz limit xotira va networkni egallamasligi uchun server maksimal qiymat belgilaydi. Sort teng qiymatlarga ega bo‘lsa, primary key kabi ikkilamchi unique tartib qo‘shiladi.
Endpoint contract testi server implementatsiyasi bilan e’lon qilingan schema orasidagi farqni aniqlaydi. Consumer testi esa muhim client kutgan xatti-harakatni alohida tasdiqlaydi.
Bog‘liq tushunchalar
API, HTTP method, URL, REST, status code, request validation, rate limiting