Serverrespons 207 Multi-Status
HTTP-statuscode 207 (Multi-Status)
HTTP-statuscode 207, ook wel Multi-Status genoemd, wordt gebruikt om meerdere statusinformatie in één enkel antwoord te communiceren. Dit is bijzonder nuttig wanneer een enkele aanvraag informatie over de staat van meerdere bronnen moet teruggeven. In deze sectie worden de kenmerken van deze statuscode, het gebruik ervan en enkele praktische voorbeelden in verschillende programmeertalen behandeld.
Kort overzicht van statuscode 207
- Definitie en doel: De 207-statuscode geeft aan dat de server meerdere statusinformatie over verschillende bronnen in een enkele response stuurt.
- Wanneer de code 207 te gebruiken: Deze statuscode is ideaal in situaties waarin een client een batchverzoek doet om informatie over meerdere bronnen tegelijk op te vragen of te wijzigen.
- Structuur van een antwoord met code 207: De response bevat doorgaans een XML- of JSON-structuur die de statusinformatie van de verschillende bronnen beschrijft.
Praktische voorbeelden van het gebruik van code 207
Voorbeeld 1: Verwerken van meerdere bestanden
Bij het uploaden van meerdere bestanden kan een server de status van elk bestand afzonderlijk teruggeven.
POST /upload HTTP/1.1
Host: example.com
Content-Type: multipart/form-data
--boundary
Content-Disposition: form-data; name="file1"; filename="file1.txt"
Inhoud van bestand 1
--boundary
Content-Disposition: form-data; name="file2"; filename="file2.txt"
Inhoud van bestand 2
--boundary--
Antwoord:
HTTP/1.1 207 Multi-Status
Content-Type: application/xml
uploaded
file1.txt
error
file2.txt
Bestand te groot
Voorbeeld 2: Gelijktijdige updates van meerdere bronnen
Als een client meerdere bronnen tegelijk wil bijwerken, kan de server de status van elk updateproces teruggeven.
PATCH /resources HTTP/1.1
Host: example.com
Content-Type: application/json
{
"resources": [
{"id": 1, "name": "Resource A"},
{"id": 2, "name": "Resource B"}
]
}
Antwoord:
HTTP/1.1 207 Multi-Status
Content-Type: application/json
{
"responses": [
{"id": 1, "status": "updated"},
{"id": 2, "status": "not found"}
]
}
Voorbeeld 3: Verkrijgen van statussen uit verschillende bronnen
Een client kan informatie over de status van verschillende bronnen aanvragen in één enkele call.
GET /statuses HTTP/1.1
Host: example.com
Antwoord:
HTTP/1.1 207 Multi-Status
Content-Type: application/json
{
"statuses": [
{"id": 1, "status": "active"},
{"id": 2, "status": "inactive"},
{"id": 3, "status": "pending"}
]
}
Fouten oplossen met code 207 in verschillende programmeertalen
Python
Een voorbeeld van een foutieve implementatie.
# Foutieve code
response = requests.patch('http://example.com/resources', json=data)
if response.status_code == 207:
print('Update succesvol!')
else:
print('Fout bij update!')
Oplossing:
# Verbeterde code
response = requests.patch('http://example.com/resources', json=data)
if response.status_code == 207:
for res in response.json()['responses']:
print(f"Resource ID {res['id']} heeft status {res['status']}")
else:
print('Fout bij update!')
JavaScript (Node.js)
Voorbeeld van een foutieve implementatie.
const axios = require('axios');
axios.patch('http://example.com/resources', data)
.then(response => {
if (response.status === 207) {
console.log('Update succesvol!');
}
})
.catch(error => {
console.error('Fout:', error);
});
Oplossing:
axios.patch('http://example.com/resources', data)
.then(response => {
if (response.status === 207) {
response.data.responses.forEach(res => {
console.log(Resource ID ${res.id} heeft status ${res.status});
});
}
})
.catch(error => {
console.error('Fout:', error);
});
PHP
Een voorbeeld van een foutieve implementatie.
$response = file_get_contents('http://example.com/resources');
if ($http_response_header[0] == 'HTTP/1.1 207 Multi-Status') {
echo 'Update succesvol!';
}
Oplossing:
$response = file_get_contents('http://example.com/resources');
if (strpos($http_response_header[0], '207') !== false) {
$data = json_decode($response, true);
foreach ($data['responses'] as $res) {
echo "Resource ID {$res['id']} heeft status {$res['status']}\n";
}
}
Bespreking van mogelijke problemen en beperkingen
- Mogelijke fouten bij het gebruik van code 207: Onjuiste parsing van de response of het niet herkennen van de statuscode kan leiden tot verwarring bij de client.
- Beperkingen in het responseformaat: Niet alle clients kunnen correct omgaan met complexe of geneste JSON/XML-structuren.
- Aanbevelingen voor optimalisatie van verzoeken: Zorg voor duidelijke documentatie en gebruik standaardformaten voor responses.
Voorbeelden van succesvol gebruik van code 207 in echte toepassingen
- Diensten die code 207 gebruiken: Cloudopslagservices die batchbestanden uploaden of -bijwerken.
- Gebruikerscases en feedback van ontwikkelaars: Veel ontwikkelaars waarderen de mogelijkheid om meerdere statusberichten te ontvangen in één enkele response, wat de efficiëntie van API-aanroepen verhoogt.