HTTP-verzoeken begrijpen: structuur, methoden en voorbeelden
HTTP is de sleutel tot communicatie op het internet. Methoden van het HTTP-protocol stellen clients in staat verzoeken naar servers te sturen en servers om antwoorden terug te sturen. Elke website op het World Wide Web gebruikt HTTP-requests. Daarom is het essentieel om ze te begrijpen. Dit artikel behandelt het concept van HTTP-requests, hun structuur, veelgebruikte methoden en voorbeelden uit de praktijk. Dit helpt om te begrijpen hoe het web functioneert.
Wat is een HTTP-request? Link kopiëren
Een HTTP-request is een bericht waarin een client – zoals een webbrowser – de host op de server om een specifieke resource vraagt. Clients gebruiken URL’s in HTTP-requests om aan te geven welke resources ze van de server willen opvragen.
Componenten van een HTTP-request Link kopiëren
Elke HTTP-request bestaat uit drie hoofdcomponenten:
-
Request line
-
Headers
-
Message body
Request Line Link kopiëren
De request line is de eerste regel van een HTTP-request. Deze initialiseert een actie op de server. De request line geeft aan welke HTTP-methode en HTTP-versie de client gebruikt. Naast de methode bevat de request line een URI of URL.
Voorbeeld van een request line:
GET /index.html HTTP/1.1
Headers Link kopiëren
De headers volgen direct na de request line. Ze geven extra informatie van de client aan de server. Headers bevatten o.a. informatie over de host, de user agent, taalvoorkeuren en meer. De server gebruikt deze gegevens om de browser en het besturingssysteem van de client te identificeren. HTTP-headers zijn hoofdlettergevoelig, gevolgd door een dubbele punt en een waarde.
Voorbeeld van HTTP-request headers:
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Message Body Link kopiëren
Het message body-gedeelte wordt gebruikt om data naar de server te sturen. Het is optioneel: niet elke HTTP-request bevat een body. Of een body wordt gebruikt, hangt af van de HTTP-methode. Requests die een body bevatten gebruiken meestal POST, bijvoorbeeld om formulierdata te versturen. De server verwerkt deze data verder.
Veelgebruikte HTTP-methoden Link kopiëren
Een HTTP-request verbindt de client met de server. Redenen hiervoor kunnen zijn:
-
een resource opvragen
-
nieuwe data versturen
-
bestaande data wijzigen
-
data verwijderen
Hieronder de belangrijkste en meest gebruikte methoden:
4.1 GET – Resources ophalen Link kopiëren
De meest gebruikte HTTP-methode is GET, waarmee de server om specifieke data wordt gevraagd. Elke keer dat een gebruiker een webpagina opent, stuurt de browser een GET-request om de benodigde content op te halen.
Eigenschappen van GET:
-
cacheable
-
safe
-
idempotent
GET kan alleen bestaande data ophalen — het verandert niets aan de server.
POST – Data versturen Link kopiëren
Wanneer een client data naar de server moet sturen (bijv. formulieren, uploads), wordt POST gebruikt.
De body bevat de verzonden gegevens. Meerdere POST-requests kunnen meerdere nieuwe resources creëren.
PUT – Resources bijwerken Link kopiëren
PUT lijkt op POST, maar:
-
POST = nieuwe data creëren
-
PUT = bestaande data vervangen
De client moet de volledige nieuwe versie van de resource meesturen. PUT is idempotent – dezelfde request meerdere keren uitvoeren levert hetzelfde resultaat op.
DELETE – Resources verwijderen Link kopiëren
DELETE laat de server weten dat een bepaalde resource moet worden verwijderd.
Als het verwijderen is gelukt, stuurt de server een bevestiging terug. DELETE is eveneens idempotent.
Wat is een HTTP-response? Link kopiëren
Wanneer de server een antwoord terugstuurt op een HTTP-request, heet dat een HTTP-response. Net als een request bestaat deze uit drie delen:
-
Status line
-
Headers
-
Message body
Status Line Link kopiëren
Deze bevat:
-
HTTP-versie
-
Statuscode
-
Statusbericht
Headers Link kopiëren
Response headers bevatten extra informatie zoals:
-
datum en tijd
-
content-type
-
serverdetails
-
cache-instructies
Body Link kopiëren
De body bevat de daadwerkelijke gegevens die naar de client worden teruggestuurd, zoals:
-
HTML
-
JSON
-
XML
-
afbeeldingen
-
bestanden
Statuscodes en hun betekenis Link kopiëren
HTTP-statuscodes geven aan hoe de server de aanvraag heeft verwerkt. Ze bestaan uit drie cijfers, waarbij het eerste cijfer de categorie bepaalt:
|
Codegroep |
Beschrijving |
|
1xx |
Informatief – verwerking gaat door |
|
2xx |
Succes – verzoek correct verwerkt |
|
3xx |
Redirect – extra acties vereist |
|
4xx |
Clientfout – probleem aan clientzijde |
|
5xx |
Serverfout – probleem aan serverzijde |
HTTP-headers en hun belang Link kopiëren
Headers bevatten cruciale informatie voor de communicatie tussen client en server. Ze zijn essentieel voor webfunctionaliteit.
Host-identificatie Link kopiëren
Headers geven aan welk domein door de server wordt gehost.
Caching Link kopiëren
Expires en Cache-Control bepalen hoe lang content wordt opgeslagen.
Cookiebeheer Link kopiëren
Headers zoals Set-Cookie en Cookie houden gebruikerssessies bij.
Beveiliging Link kopiëren
Headers zoals Authorization en Content-Security-Policy beschermen webapplicaties.
Response-controle Link kopiëren
Headers geven aan of een request succesvol was of niet.
Praktische voorbeelden van HTTP-requests Link kopiëren
De voorbeelden hieronder gebruiken Python en de requests-bibliotheek.
GET Link kopiëren
import requests
response = requests.get("https://api.example.com/data",
params={"param1": "value1", "param2": "value2"})
print(response.status_code)
print(response.json())
POST Link kopiëren
import requests
url = "https://api.example.com/users"
data = {
"username": "newuser",
"email": "newuser@example.com",
"password": "securepassword"
}
response = requests.post(url, json=data)
if response.status_code == 201:
print("User created successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
PUT Link kopiëren
import requests
url = "https://api.example.com/users/123"
data = {
"username": "updateduser",
"email": "updateduser@example.com"
}
response = requests.put(url, json=data)
if response.status_code == 200:
print("User updated successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
DELETE Link kopiëren
import requests
url = "https://api.example.com/users/123"
response = requests.delete(url)
if response.status_code == 204:
print("User deleted successfully.")
else:
print("Error:", response.status_code, response.text)
Conclusie Link kopiëren
HTTP-requests spelen een cruciale rol bij webinteracties. Daarom is het belangrijk om de verschillende methoden te kennen en te begrijpen hoe ze werken. Het kiezen van de juiste methode zorgt voor efficiënte communicatie tussen client en server en verbetert de prestaties van webapplicaties.