What is a REST API?

HTTP vs. REST API: Forstå Forskellen

03/04/2019

Rating: 4.79 (13110 votes)

I den moderne digitale verden er kommunikation mellem forskellige softwaresystemer altafgørende. Fra sociale medier, der integreres i apps, til e-handelsplatforme, der behandler betalinger, er evnen til at udveksle data problemfrit fundamentet for næsten alt, hvad vi gør online. Denne kommunikation muliggøres af API'er (Application Programming Interfaces), og to af de mest centrale begreber i denne sammenhæng er HTTP og REST. Selvom de ofte nævnes i samme åndedrag og arbejder tæt sammen, er de fundamentalt forskellige. At forstå denne forskel er nøglen til at forstå, hvordan moderne webtjenester fungerer.

How do RESTful API operations align with HTTP methods?
In RESTful API design, these operations directly correspond to HTTP methods, providing a consistent structure for resource manipulation. Here’s how they align: Operation: Add new resources. Operation: Retrieve or view existing resources. Operation: Modify existing resources. Operation: Remove resources.

Mange forveksler REST med en protokol eller en standard, men det er i virkeligheden en arkitektonisk stil – et sæt af principper og begrænsninger for, hvordan man designer netværksbaserede applikationer. HTTP (Hypertext Transfer Protocol) er derimod den underliggende protokol, der bruges til at overføre data på internettet. Man kan tænke på HTTP som postvæsenet, der leverer breve, mens REST er retningslinjerne for, hvordan brevene skal skrives og adresseres for at sikre en effektiv og forudsigelig levering. Denne artikel vil dykke ned i kernen af begge teknologier, belyse deres unikke roller og forklare, hvordan deres symbiotiske forhold driver nutidens web.

Indholdsfortegnelse

Hvad er en REST API? En Arkitektonisk Tilgang

REST står for REpresentational State Transfer. Det er ikke en teknologi i sig selv, men snarere en arkitektonisk stil, der definerer et sæt af begrænsninger for at skabe skalerbare, effektive og fleksible webtjenester. En API, der overholder disse REST-principper, kaldes en RESTful API. Formålet med REST er at skabe en ensartet og forudsigelig måde for systemer at kommunikere på over internettet.

Kerneegenskaber ved REST API'er

For at en API kan betragtes som RESTful, skal den overholde flere centrale principper:

  • Klient-Server Arkitektur: REST er baseret på en model, hvor klienten (f.eks. en browser eller en mobilapp) og serveren (hvor dataene bor) er adskilte. De opererer uafhængigt af hinanden. Klienten behøver ikke at kende til serverens indre logik, og serveren behøver ikke at bekymre sig om klientens brugergrænseflade. Denne adskillelse gør systemet mere skalerbart og fleksibelt.
  • Statsløs (Stateless): Dette er et af de vigtigste principper. Hver anmodning (request) fra en klient til en server skal indeholde al den information, serveren behøver for at forstå og behandle anmodningen. Serveren gemmer ingen information om klientens session mellem anmodninger. Hver anmodning er en isoleret, selvstændig transaktion. Dette forbedrer pålideligheden og skalerbarheden, da serveren ikke skal administrere sessionstilstande for potentielt millioner af brugere.
  • Cachelagring (Cacheable): Svar (responses) fra serveren kan eksplicit markeres som enten cachelagringsegnede eller ikke. Hvis et svar kan caches, kan klienten genbruge dataene i en periode uden at skulle kontakte serveren igen. Dette reducerer serverbelastningen og forbedrer ydeevnen markant for klienten.
  • Ensartet Grænseflade (Uniform Interface): Dette princip forenkler og afkobler arkitekturen, hvilket gør det muligt for hver del at udvikle sig uafhængigt. Det består af fire underbegrænsninger: identifikation af ressourcer via URI'er, manipulation af ressourcer gennem repræsentationer (som JSON), selvbeskrivende meddelelser og HATEOAS (Hypermedia as the Engine of Application State).
  • Lagdelt System (Layered System): En klient kan ikke nødvendigvis se, om den er forbundet direkte til slutserveren eller til en mellemliggende server (f.eks. en load balancer, en cache eller en proxy). Dette lagdelte system giver mulighed for at tilføje sikkerhedslag og forbedre skalerbarheden uden at påvirke klienten.

HTTP-metoder: Sproget i REST

HTTP er den protokol, som RESTful API'er bruger til at kommunikere. HTTP definerer et sæt af metoder (også kendt som verber), der angiver den handling, der ønskes udført på en given ressource (f.eks. en bruger, et produkt eller en ordre). Disse metoder er direkte knyttet til CRUD-operationerne (Create, Read, Update, Delete), som er de fire grundlæggende funktioner i vedvarende lagring.

De mest almindelige HTTP-metoder

  • GET: Bruges til at læse (Read) eller hente en repræsentation af en ressource. En GET-anmodning til /brugere/123 ville bede om data for brugeren med ID 123. GET-anmodninger er sikre (de ændrer ikke ressourcen) og idempotente (flere identiske anmodninger har samme effekt som én). Ved succes returneres typisk statuskode 200 (OK).
  • POST: Bruges oftest til at oprette (Create) en ny ressource. En POST-anmodning til /brugere med brugeroplysninger i anmodningens krop ville skabe en ny bruger. Ved succesfuld oprettelse returnerer serveren typisk statuskode 201 (Created) og en reference til den nye ressource. POST er hverken sikker eller idempotent.
  • PUT: Bruges til at opdatere (Update) en eksisterende ressource fuldstændigt. Klienten sender en komplet repræsentation af ressourcen, som erstatter den eksisterende på serveren. Hvis ressourcen ikke findes, kan PUT også bruges til at oprette den. En PUT-anmodning til /brugere/123 vil erstatte hele brugerprofilen for bruger 123. PUT er idempotent.
  • PATCH: Bruges til at foretage en delvis opdatering (Update) af en ressource. I modsætning til PUT sender klienten kun de data, der skal ændres. For eksempel, for kun at opdatere en brugers e-mail, ville en PATCH-anmodning til /brugere/123 kun indeholde den nye e-mailadresse. PATCH er ikke nødvendigvis idempotent.
  • DELETE: Bruges til at slette (Delete) en ressource. En DELETE-anmodning til /brugere/123 vil fjerne brugeren med ID 123 fra systemet. Ved succes returneres ofte statuskode 204 (No Content). DELETE er idempotent.

Sammenligning: PUT vs. PATCH

Forskellen mellem PUT og PATCH er en vigtig detalje i REST API-design. Selvom begge bruges til opdateringer, er deres tilgang forskellig og har betydning for effektivitet og dataintegritet.

EgenskabPUTPATCH
HandlingErstatter hele ressourcen.Opdaterer kun de specificerede felter.
Data, der sendesDen fulde repræsentation af ressourcen skal sendes.Kun de ændringer, der skal foretages, sendes.
IdempotensJa, altid idempotent.Ikke garanteret at være idempotent.
EksempelOpdatering af en brugers fulde profil (navn, adresse, e-mail).Ændring af kun en brugers telefonnummer.

Vigtigheden af HTTP-statuskoder

En RESTful API kommunikerer ikke kun via data, men også via statuskoder. Hvert svar fra serveren indeholder en HTTP-statuskode, der fortæller klienten, hvad resultatet af anmodningen var. Korrekt brug af statuskoder er afgørende for en robust API.

What are RESTful HTTP methods?
RESTful HTTP methods are an essential component of developing web APIs in the REST architectural style. They are widely used in modern web development because they provide a standard interface for interacting with server resources.
  • 2xx - Succes: Anmodningen blev modtaget, forstået og accepteret. Eksempler: 200 OK, 201 Created, 204 No Content.
  • 3xx - Omdirigering: Yderligere handling er nødvendig for at fuldføre anmodningen.
  • 4xx - Klientfejl: Anmodningen indeholder forkert syntaks eller kan ikke opfyldes. Eksempler: 400 Bad Request (ugyldig input), 401 Unauthorized (autentificering mangler), 403 Forbidden (ingen adgang), 404 Not Found (ressourcen findes ikke).
  • 5xx - Serverfejl: Serveren kunne ikke opfylde en tilsyneladende gyldig anmodning. Eksempler: 500 Internal Server Error (en generisk serverfejl), 503 Service Unavailable (serveren er midlertidigt nede).

Ofte Stillede Spørgsmål (OSS)

Er REST og HTTP det samme?

Nej. Det er den mest almindelige misforståelse. HTTP er en kommunikationsprotokol – et regelsæt for dataoverførsel. REST er en arkitektonisk stil – et sæt af designprincipper for at bygge webtjenester. En RESTful API bruger HTTP-protokollen til at implementere sin arkitektur.

Hvad betyder idempotens?

En operation er idempotent, hvis det at udføre den flere gange har præcis samme effekt som at udføre den én gang. For eksempel er det at slette en ressource (DELETE) idempotent; efter den første sletning er ressourcen væk, og efterfølgende forsøg på at slette den ændrer ikke systemets tilstand yderligere. At oprette en ressource med POST er derimod ikke idempotent, da hver anmodning vil skabe en ny, unik ressource.

Hvornår er REST det rigtige valg?

REST er ideel til applikationer, der kræver skalerbarhed, fleksibilitet og en klar adskillelse mellem klient og server. Det er standarden for de fleste offentlige API'er og mobile applikationer på grund af sin enkelhed og brug af veletablerede webstandarder som HTTP og JSON.

Konklusion

Forskellen mellem HTTP og REST er forskellen mellem et værktøj og en plan. HTTP er det kraftfulde værktøj, der muliggør kommunikation over internettet, med dets metoder og statuskoder. REST er den gennemtænkte arkitektoniske plan, der bruger HTTP på en struktureret og forudsigelig måde for at bygge robuste, skalerbare og vedligeholdelsesvenlige webtjenester. Ved at forstå, at REST er en designfilosofi, og HTTP er implementeringsprotokollen, kan udviklere skabe API'er, der ikke kun fungerer, men som også er effektive og fremtidssikrede i et konstant udviklende digitalt landskab.

Hvis du vil læse andre artikler, der ligner HTTP vs. REST API: Forstå Forskellen, kan du besøge kategorien Teknologi.

Go up