REST bilan tanishuv

All lectures for UZ purposes
Daraja, Dars
Mavjud

8.1 Remote API yondashuvi

Barcha dasturchilar klient-server arxitekturasi qurishda bir xil xatoni qiladilar. Ular serverga yuboriladigan so'rovlarni, metodlarni chaqirishdek qabul qilishadi.

Agar serverda hisobot yaratish jarayonini boshlamoqchi bo'lsang, serverga quyidagi so'rovni yuborish uchun nima sabab bo'lmasin:


        http://server.com/startDocumentGeneration?params
        

Va hisobotni yaratib bo'lgandan so'ng uni qanday yuklab olasiz? Buning uchun yana bir metod yozamiz:


        http://server.com/getDocument
        

Server HttpSessionda bizning hujjatimiz haqida ma'lumot saqlaydi va hujjat yaratilgan zahotiyoq uni beradi.

Ajoyib yondashuv. Yoki yo'qmi?

Bu yondashuv aslida dahshatli. Gap shundaki, server hujjat raqamini esda saqlashi kerak. Boshqacha qilib aytganda, yangi metod chaqiruvlarini to'g'ri qayta ishlash uchun, server avvalgi metod chaqiruvlarining natijalarini esda saqlashi kerak.

Vebda bu katta muammo. Internet yo'qolishi, brauzer yopilishi mumkin. Sahifani qayta yuklash yoki biror havolaga tasodifan bosish mumkin va hokazo. Server esa foydalanuvchining avvalgi so'rovlaridan megabaytlar ma'lumot saqlashda davom etadi...

Server bilan qulay ishlash uchun siz avvalgi so'rovlardan ma'lumotlar doimo yoningizda bo'lishiga ishonishingiz mumkin emas.

Xo'sh, unda server metodlarini qanday chaqirish kerak? Yaxshi javob shundayki: hech qanday!

8.2 REST yondashuvi

Dasturchilar asl manbaga qaytib, dastlabki ish serverda fayl yo'li sifatida amalga oshirilgani eslariga tushdi:


        http://server.com/path?params
        

Va bu yondashuvdan maksimal darajada foydalanishga qaror qilishdi.

Endi server ma'lumotlar ombori sifatida qaraladi, ular ba'zi daraxt shaklida tashqariga ko'rinadi.

Barcha foydalanuvchilar ro'yxatini olishni xohlaysizmi, so'rovni chaqiring:


          http://server.com/users
        

113 foydalanuvchi ma'lumotlarini olishni xohlaysizmi, so'rovni bajarishingiz kerak:


          http://server.com/users/113
        

Va hokazo, hammasi shu tarzda davom etadi.

Yana bir bor, server ma'lumotlar ombori sifatida qaraladi, ular ba'zi daraxt shaklida tashqariga ko'rinadi.

Ma'lumotlarni olish mumkin – GET so'rovlari, o'zgartirish – POST so'rovi va o'chirish – DELETE so'rovi orqali amalga oshiriladi.

8.3 Holatni saqlamaslik

REST protokoli klient va server o'rtasidagi o'zaro aloqani quyidagi shartni bajarishni talab qiladi: klientdan kelgan so'rovlar orasidagi davrda serverda klientning holati haqida hech qanday ma'lumot saqlanmaydi.

Klientdan kelgan barcha so'rovlar serverga so'rovni bajarish uchun zarur bo'lgan barcha ma'lumotlarni olishi uchun tuzilgan bo'lishi kerak. Sessiyning holati esa klient tarafida saqlanadi.

Klient so'rovlarini qayta ishlash davomida klient o'tish holatida bo'lganligi taxmin qilinadi. Dastur har bir alohida holati, keyingi klient so'rovida foydalanilishi mumkin bo'lgan aloqalar orqali ifodalanadi.

8.4 Interfeysning yagona shakli

Serverdan obyektlar qaytariladigan barcha yo'llar standartlashtiriladi. Bu juda qulay, ayniqsa, begonalarning REST-serverlaridan ma'lumot olishingiz kerak bo'lsa.

Obyektlar interfeysining uchta shartni bajarishi kerak:

Resurslarni identifikatsiya qilish

Barcha resurslar URI yordamida so'rovlarda identifikatsiya qilinadi. Server ichidagi resurslar, klientlarga qaytariladigan ko'rinishlardan ajratilgan. Masalan, server ma'lumotlarni HTML, XML yoki JSON formatida yuborishi mumkin, ulardan hech biri server ichidagi saqlash turi emas.

Resurslarni ko'rinish orqali boshqarish

Agar klient resursning ko'rinishini, metama'lumotlarini o'z ichiga olgan holda saqlasa, u serverdagi resursni o'zgartirish yoki o'chirish uchun yetarli ma'lumotga ega bo'ladi.

"O'z-o'zini tushuntiradigan" xabarlar

Har bir xabar uni qanday qayta ishlashni tushunish uchun yetarli ma'lumotni o'z ichiga oladi. Masalan, agar sizga foydalanuvchi haqida ma'lumot kerak bo'lsa, server sizga JSON obyekti qaytaradi, unda ism, manzil maydonlari bo'ladi.

Klient birinchi javobda birinchi raqam – bu yosh, ikkinchi esa – tug'ilgan sana ekanligini bilishi kerak bo'lgan holat bo'lmasligi kerak.

8.5 Cache qilish

REST yondashuvi, ma'lumotlar so'rovi HTTP protokoli orqali amalga oshirilishini taxmin qiladi. Shuning uchun obyektlar GET so'rovini chaqirish orqali olinadi. Demak, ularga, GET so'rovi orqali olingan barcha resurslarga, HTTP resurslarini cache qilishning barcha qoidalari tegishli.

Ya'ni, REST API orqali olingan ma'lumotlar veb-serverlarda har qanday statik resurslar kabi cache qilinadi. Go'zallik :)

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION