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
Oefeninstructies
- Voeg een
accept-header toe om van de server een response met content-typeapplication/xmlaan 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)