Den beste måten å bruke Django - REST API på

Foto Thomas fra Unsplash

Før økningen av single Page-applikasjoner, ville applikasjoner gjengi et fullstendig HTML-dokument med CSS på serveren ved å bruke PHP, Java eller et annet språk og bruke JavaScript / JQuery og AJAX forespørsler for å gi et spesifikt sett av interaksjoner en bruker kan ha med websiden. . Dette fungerte veldig bra med Djangos templeringssystem og statiske filer siden Django gjorde alt arbeidet for deg og lastet inn filer som var nødvendige for en spesifikk URL.

Men så kom enkeltsidesapplikasjoner.

I stedet for å laste inn hver side på grunn av en handling som for eksempel et knappeklikk - og få brukeren til å vente litt lenger - Enkeltsidesapplikasjoner gir mulighet for rask omlastingshastighet mellom sider med asynkrone HTTP-forespørsler, noe som gir en sømløs brukeropplevelse, men med et offer innledende lastetid. Mange har eller er i gang med å bytte til å bruke Javascript-rammer for front-end-stacken deres, og ganske mye splitte frontenden fra bakenden. Dette gjør Django-maler ubrukelig.

Etter min mening er den beste måten å bruke Django for webapplikasjoner å bruke den til å bygge et REST API og bruke front-end rammer - React.js, Angular.js, Ember.js, Vue.js - for å gjengi websiden din , som kan være helt uavhengig av Django.

REST APIer

I hovedsak er et API grensesnittet serveren / backend gir slik at apper kan snakke med dem. Et REST API er et API som følger et sett med regler som kalles REST (Representative State Transfer) og et API endepunkt er visse funksjoner i grensesnittet.

La oss ta et eksempel på Instagram, som publiserte API-en sin for publikum. Så si at du ville vite informasjon om brukeren 1234567, navnet hans, hvor mange følgere de har, deres bio osv. Gitt en TILGANGSMÅL som du får fra Instagram, ber du om et sluttpunkt:

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

Instagram-webservere vil deretter utføre visse funksjoner som inkluderer søk gjennom databasen deres for å få den brukeren og vil deretter returnere denne teksten, som er i JSON-format:

{
 “Data”: {
     “Id”: “1234567”,
     “Brukernavn”: “snoopdogg”,
     “Full_name”: “Snoop Dogg”,
     “Profile_picture”: “http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg”,
     "Bio": "Dette er min bio",
     “Nettsted”: “http://snoopdogg.com”,
     “Teller”: {
         “Media”: 1320,
         “Følger”: 420,
         “Følger_by”: 3410
     }
  }
}

Hvis du vil ha mer informasjon, for eksempel deres følgere, må du sende en ny forespørsel til en annen URL for å få en liste over deres følgere. Det er også måter å legge til brukere, legge til bilder osv. Hvis du gir noen data, men det er opp til instagram om de vil tillate publikum å gjøre det. Slik opprettes tredjepartsapper for å spore hvem som har fulgt deg. Faktisk kaller Instagram sine mobilapper en haug av disse API-funksjonene og viser disse dataene på en veldig slank og rask måte (det er faktisk veldig fascinerende i hvordan de gjør appen deres rask. Instagrams CTO snakker om det her)

Django REST Framework

En flott og vanlig måte å implementere et API med Django på er å bruke Django REST Framework, en Django-pakke fullpakket med kraftige, men fleksible verktøy for å bygge et REST API. Det lar deg serialisere dataene dine (oversette modellobjekter til - i dette tilfellet, tekst), raskt skrive visninger / sluttpunkter og teste dem, legge til autentisering og mye mer.

Med dette vil du være i stand til å skille bakenden fra frontend, slik at du kan utvide med andre formater som IOS og Android-applikasjoner uten å bare holde deg til bare webapper. I tillegg blir ikke front-end og back-end integrert på en veldig tett og sammensatt måte, som gjør debugging til et levende helvete. Til og med selskaper som Instagram og Doordash har brukt Django for å implementere API-en deres som back-end-tjeneste, med Instagram som bruker React.js for å utvikle nettappen sin.

Dette er etter min mening den beste måten å bruke Django på.

Flere ressurser

  • Hva er REST?
  • Offisielt Django REST Framework
  • Django REST Framework tutorial

Hvis du likte å lese den, legg igjen en klapp / kommentar! Jeg er ganske ny på dette, og jeg vil bli bedre - alle svar er velkomne :)

Sjekk også ut de andre innleggene mine!