Skip to content

Use django_json_404_middleware.JSON404Middleware ? #10

@kellyrowland

Description

@kellyrowland

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions