Bedste måde at bruge Django - REST API på

Foto Thomas fra Unsplash

Før fremkomsten af ​​enkelt-side-applikationer, ville applikationer gengive et fuldt HTML-dokument med CSS på serveren ved hjælp af PHP, Java eller et andet sprog og bruge JavaScript / JQuery og AJAX anmodninger til at give et specifikt sæt interaktioner, som en bruger kan have med websiden . Dette fungerede meget godt med Djangos templeringssystem og statiske filer, da Django udførte alt arbejde for dig og indlæste filer, der var nødvendige for en bestemt URL.

Men så kom Single Page Applications.

I stedet for at genindlæse hver side på grund af en handling som et knapklik - og få brugeren til at vente lidt længere - giver enkel side-applikationer mulighed for hurtig genindlæsningshastighed mellem sider med asynkrone HTTP-anmodninger, hvilket giver en problemfri brugeroplevelse, men med et offer startbelastningstid. Mange har eller er i færd med at skifte til at bruge Javascript-rammer til deres front-end stack og stort set splitte front-end fra bagenden. Dette gør Django-skabeloner væsentligt ubrugelige.

Efter min mening er den bedste måde at bruge Django til webapplikationer på at bruge det til at oprette et REST API og bruge front-end rammer - React.js, Angular.js, Ember.js, Vue.js - til at gengive din webside , som kan være helt uafhængig af Django.

REST API'er

I det væsentlige er en API det interface, serveren / backend leverer, så apps kan tale med dem. Et REST API er et API, der følger et sæt regler kaldet REST (Representative State Transfer) og et API endpoint er visse funktioner i grænsefladen.

Lad os tage et eksempel på Instagram, der har offentliggjort deres API til offentligheden. Så sig, at du ønskede at vide oplysninger om bruger 1234567, hans / hendes navn, hvor mange følgere de har, deres bio osv. I betragtning af en TILGÆNGELEDNING, som du får fra Instagram, anmoder du om et slutpunkt:

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

Instagram-webservere udfører derefter visse funktioner, der inkluderer søgning gennem deres database for at få denne bruger og returnerer derefter denne tekst, der er i JSON-format:

{
 "data": {
     “Id”: “1234567”,
     "Brugernavn": "snoopdogg",
     “Fuld_navn”: “Snoop Dogg”,
     “Profile_picture”: "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
     "Bio": "Dette er min bio",
     “Webside”: “http://snoopdogg.com”,
     “Tæller”: {
         "Medier": 1320,
         “Følger”: 420,
         “Fulgt_by”: 3410
     }
  }
}

Hvis du ønsker mere information som deres tilhængere, bliver du nødt til at indgive en anden anmodning til en anden URL for at få en liste over deres tilhængere. Der er også måder at tilføje brugere, tilføje fotos osv., Hvis du giver nogle data, men det er op til instagram, om de vil tillade offentligheden at gøre det. Sådan oprettes tredjepartsapps for at spore, hvem der har fulgt dig. Faktisk kalder Instagram's mobile apps en masse af disse API-funktioner og viser disse data på en meget slank og hurtig måde (det er faktisk meget fascinerende i, hvordan de gør deres app hurtig. Instagram's CTO taler om det her)

Django REST Framework

En fantastisk og almindelig måde at implementere en API med Django er ved at bruge Django REST Framework, en Django-pakke fyldt med kraftfulde, men fleksible værktøjer til at opbygge et REST API. Det giver dig mulighed for at serialisere dine data (oversætte dine modelobjekter til - i dette tilfælde tekst), hurtigt skrive visninger / slutpunkter og teste dem, tilføje godkendelse og meget mere.

Med dette vil du være i stand til at adskille din back-end fra din front-end, så du kan udvide med andre formater som IOS og Android-applikationer uden blot at holde sig til bare webapps. Derudover vil din front-end og back-end ikke blive integreret på en meget stram og kompleks måde, der gør debugging til et levende helvede. Selv virksomheder som Instagram og Doordash har brugt Django til at implementere deres API som deres back-end-tjeneste, mens Instagram bruger React.js til at udvikle deres webapp.

Dette er efter min mening den bedste måde at bruge Django på.

Flere ressourcer

  • Hvad er REST?
  • Officielt Django REST Framework
  • Django REST-rammevejledning

Hvis du nød at læse den, bedes du give et klap / kommentar! Jeg er ret ny på dette, og jeg vil gerne blive bedre - ethvert svar er velkommen :)

Tjek også mine andre indlæg!