Arkitektur
Hvad laver en backend?
Backenden er programmet på serveren. Den tager imod HTTP-forespørgsler, afgør om de er tilladte, henter eller ændrer data i databasen, og svarer med JSON. Den er det eneste sted, hvor forretningsreglerne og adgangen til data hører hjemme.
Forudsætter, at du har set tre-lagsarkitektur .
En backend er bare et program, der venter
Den ligger og lytter på en adresse. Kommer der en forespørgsel ind, kigger den på metoden og stien, finder den kode, der hører til, kører den, og sender et svar.
En rute er parret af en metode og en sti:
GET /api/ordrer hent alle ordrer
GET /api/ordrer/12 hent ordre 12
POST /api/ordrer opret en ny ordre
DELETE /api/ordrer/12 slet ordre 12
Fire ruter, samme navneord. Det er den REST-form, du så under API, set fra den anden side.
Hvad der sker inde i en rute
Næsten alle ruter gør de samme fem ting i den samme rækkefølge:
- Læs forespørgslen. Parametre fra stien, data fra indholdet.
- Er brugeren logget ind, og må de det her? Ellers svar 401 eller 403.
- Er data gyldige? Er beløbet et positivt tal? Findes kunden? Ellers svar 400.
- Gør arbejdet. En eller flere SQL-forespørgsler, og eventuelle udregninger.
- Svar. En statuskode og som regel JSON.
Ligger de fem trin tydeligt i den rækkefølge i jeres kode, er den let at læse for en censor, og let at fejlfinde for jer selv.
Hvorfor reglerne skal ligge her
Frontend kan ikke stoles på. Den kører på brugerens maskine, og brugeren kan ændre alt i den, eller helt springe den over og sende forespørgsler direkte.
Derfor gælder: enhver regel, det betyder noget at overholde, skal håndhæves i backend. Frontend må gerne tjekke det samme; det giver hurtigere besked til brugeren. Men det er backendens tjek, der tæller.
Backend og databasen
Backenden er det eneste, der taler med databasen. To ting er værd at have styr på i et projekt:
- Parametriserede forespørgsler. Sæt aldrig brugerens tekst direkte ind i en SQL-streng. Brug pladsholdere. Ellers har I SQL-injektion, og det bliver bemærket.
- Åbn og luk ordentligt. En forbindelse, der ikke lukkes, hober sig op, indtil databasen ikke tager flere imod.
Hvad I skal kunne forklare
- Hvilke ruter jeres backend har, og hvorfor de hedder det, de gør.
- Hvor en bestemt regel håndhæves, og hvad der ville ske, hvis den kun lå i frontend.
- Hvordan et kald bevæger sig fra rute til SQL og tilbage.
Det sidste er den samme rejse som i tre-lagsarkitektur, bare fortalt indefra.
Kort opsamling
- En backend lytter, afgør, henter og svarer.
- En rute er metode plus sti.
- Reglerne skal håndhæves her, ikke i browseren.
- Hemmeligheder og databaseadgang bor kun her.
Læs videre
- Tre-lagsarkitektur Tre-lagsarkitektur forklaret på dansk: frontend, backend og database, hvad hvert lag har ansvaret for, og hvad der går galt når reglerne ligger i det forkerte lag.
- Hvad er et API? Hvad er et API? Forklaret på dansk uden fagsprog, med et konkret eksempel på et kald, hvordan svaret ser ud, og hvad en API-nøgle er til.
- SELECT - hent data SELECT i SQL forklaret på dansk: kolonner, ORDER BY, DISTINCT og aliasser. Med eksempler og rækkefølgen databasen faktisk udfører delene i.
Senest gennemgået .