Aan de slagGa gratis aan de slag

Fouten met content-types afhandelen

Wat gebeurt er als je om een response in een specifiek formaat vraagt, maar de server dat verzoek niet kan inwilligen? Stel dat je de response in XML wilt ontvangen in plaats van JSON. Als de server niet in XML kan antwoorden, geeft hij een specifieke statuscode terug die aangeeft dat hij niet in het gevraagde formaat kan reageren. De statuscode die hierbij hoort is 406 Not Acceptable, of kort 406. De response van de server bevat vaak ook een accept-header met een lijst van alle responseformaten waarmee hij wél kan antwoorden. Gebruik dit om te ontdekken met welke contenttypes de API kan reageren.

Deze oefening maakt deel uit van de cursus

Introductie tot API's in Python

Cursus bekijken

Oefeninstructies

  • Voeg een accept-header toe om van de server een response met content-type application/xml aan te vragen.
  • Controleer met de relevante statuscode of de server het verzoek niet heeft geaccepteerd.
  • Print een lijst met geaccepteerde contenttypes uit de serverresponse.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Add a header to use in the request
headers = {____}
response = requests.get('http://localhost:3000/lyrics', headers=headers)

# Check if the server did not accept the request
if (response.____ == ____):
  print('The server can not respond in XML')
  
  # Print the accepted content types
  print('These are the content types the server accepts: ' + response.____)
else:
  print(response.text)
Code bewerken en uitvoeren