Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use django_json_404_middleware.JSON404Middleware ? #10

Open
kellyrowland opened this issue Jun 6, 2019 · 0 comments
Open

Use django_json_404_middleware.JSON404Middleware ? #10

kellyrowland opened this issue Jun 6, 2019 · 0 comments

Comments

@kellyrowland
Copy link

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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant