Djangoni ishlatishning eng yaxshi usuli - REST API

Fotosurat Tomas Unsplashdan

Yagona sahifali dasturlarning paydo bo'lishidan oldin, dasturlar PHP, Java yoki boshqa tillardan foydalangan holda CSS bilan to'liq HTML hujjatni serverga taqdim etishadi va JavaScript / JQuery va AJAX so'rovlaridan foydalanib, foydalanuvchini veb-sahifa bilan o'zaro aloqalarini o'rnatish uchun foydalanadilar. . Django shablonlash tizimi va statik fayllar bilan juda yaxshi ishladi, chunki Django siz uchun barcha ishlarni bajargan va ma'lum bir URL manziliga kerak bo'lgan fayllarni yuklagan.

Ammo keyin yagona sahifa ilovalari keldi.

Tugmani bosish va foydalanuvchini biroz kutib turish kabi harakatlar tufayli har bir sahifani qayta yuklashning o'rniga - Yagona sahifa ilovalari asinxron HTTP so'rovlari bilan sahifalar o'rtasida tezkor qayta yuklash imkonini beradi, foydalanuvchilarning uzluksiz tajribasini ta'minlaydi, lekin qurbonlik bilan. dastlabki yuk vaqti. Ko'pchilik Javascript ramkalarini o'zining oldingi qavati uchun ishlatishga o'tmoqdalar yoki o'tish bosqichidadirlar va oldingi qismni orqa qismdan ajratishgan. Bu asosan Django shablonlarini foydasiz qiladi.

Menimcha, veb-ilovalar uchun Django-dan foydalanishning eng yaxshi usuli - bu REST API-ni yaratish va oldingi ramkalar - React.js, Angular.js, Ember.js, Vue.js - veb-sahifangizni ko'rsatish uchun foydalanish. , Djangodan butunlay mustaqil bo'lishi mumkin.

REST API

Aslida, API bu server / backend ta'minlaydigan interfeys bo'lib, ilovalar ular bilan gaplashishi mumkin. REST API bu REST (vakillik holatini uzatish) deb nomlangan qoidalar to'plamiga amal qiladigan va interfeysning ma'lum funktsiyalari bo'lgan API.

O'zlarining API-larini ommaga e'lon qilgan Instagramni misol qilib olaylik. Shunday qilib, 1234567 foydalanuvchisi, uning ismi, ularning qancha izdoshlari, ularning biografiyasi va hokazolar haqida ma'lumot olishni xohlaganingizni ayting, Instagram-dan olgan ACCESS-TOKEN-ni hisobga olib, siz oxirgi nuqta haqida so'rov berasiz:

https://api.instagram.com/v1/users/12345678/?access_token=ACCESS-TOKEN

Instagram veb-serverlari keyinchalik ushbu foydalanuvchini olish uchun ma'lumotlar bazalarida qidirishni o'z ichiga olgan ba'zi funktsiyalarni bajaradi va keyin JSON formatidagi ushbu matnni qaytaradi:

{
 "Ma'lumotlar": {
     "Id": "1234567",
     "Foydalanuvchi nomi": "snoopdogg",
     "To'liq ism": "Snoop Dogg",
     "Profil_vikturasi": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
     "Bio": "bu mening bioim",
     "Veb-sayt": "http://snoopdogg.com",
     "Hisoblar": {
         "Media": 1320,
         "Quyidagilar": 420,
         "Follow_by": 3410
     }
  }
}

Agar siz ularning izdoshlari kabi qo'shimcha ma'lumotlarga ega bo'lishni istasangiz, boshqa izohlovchilarning ro'yxatini olish uchun boshqa manzilga boshqa so'rov yuborishingiz kerak bo'ladi. Shuningdek, foydalanuvchilarni qo'shish, fotosuratlarni qo'shish va hokazolar mavjud, agar siz ba'zi ma'lumotlarni taqdim qilsangiz, ammo instagram ularning omma tomonidan ruxsat berishini xohlaydimi, yo'qmi. Sizni kim kuzatmaganligini kuzatish uchun uchinchi tomon ilovalari shunday yaratiladi. Aslida, Instagram-ning mobil ilovalari ushbu API funktsiyalarining bir nechta tarkibini chaqirishadi va bu ma'lumotlarni juda yumshoq va tezkor ravishda namoyish etishadi (aslida ular o'zlarining ilovalarini qanday qilib tezkor qilishlari juda qiziq, bu erda Instagramning CTO bu haqda gapiradi)

Django REST asoslari

Django bilan API-ni amalga oshirishning ajoyib va ​​keng tarqalgan usullaridan biri bu Django REST API-ni yaratish uchun kuchli, ammo moslashuvchan vositalar bilan ta'minlangan Django REST Framework-dan foydalanishdir. Bu sizga ma'lumotlarni seriyalashtirishga imkon beradi (namunaviy ob'ektlarni tarjima qilish - bu holda, matn), ko'rinishlar / tugatish nuqtalarini tezda yozib, ularni sinab ko'rish, autentifikatsiyani qo'shish va boshqa ko'p narsalar.

Bu bilan siz orqa-uchingizni oldingi qismdan ajratib olishingiz mumkin, bu sizga faqatgina IOS va Android dasturlari kabi veb-ilovalarga yopishmasdan turib boshqa formatlar bilan kengaytirish imkoniyatini beradi. Bundan tashqari, sizning old va orqa tomoningiz juda qattiq va murakkab tarzda birlashtirilmaydi, bu tirik do'zaxni tuzatishga olib keladi. Hatto Instagram va Doordash singari kompaniyalar ham Django-dan o'zlarining API-dasturlarini o'zlarining so'nggi xizmati sifatida ishlatishadi, Instagram esa veb-ilovalarini ishlab chiqish uchun React.js-dan foydalanadi.

Menimcha, bu Djangoni ishlatishning eng yaxshi usuli.

Ko'proq manbalar

  • REST nima?
  • Rasmiy Django REST asoslari
  • Django REST Framework qo'llanmasi

Agar siz uni o'qishni yoqtirsangiz, iltimos, qarsak / sharh qoldiring! Men bu borada juda yangiman va yaxshilanishni istayman - har qanday javob yaxshi bo'ladi :)

Boshqa postlarimni ham ko'rib chiqing!