-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Suggestion - add django_json_404_middleware.JSON404Middleware to the middleware.
Currently, if someone mistypes a URL such that the API returns a 404 and then they go to look at the JSON-formatted response, they get a decoding error:
>>> from requests import Session
>>> s = Session()
>>> r = s.get("http://127.0.0.1:8000/api/statuscori")
>>> r.json()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/rowlandk/anaconda3/lib/python3.6/site-packages/requests/models.py", line 763, in json
return json.loads(self.text, **kwargs)
File "/Users/rowlandk/anaconda3/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/Users/rowlandk/anaconda3/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/rowlandk/anaconda3/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
with this middleware installed, the user sees a more friendly error message:
>>> r = s.get("http://127.0.0.1:8000/api/statuscori")
>>> r.json()
{'detail': '/api/statuscori not found'}
Project here: https://pypi.org/project/django-json-404-middleware/
Metadata
Metadata
Assignees
Labels
No labels