Reputation: 4082
I am quite surprised I couldn't find anything on this in my Google searching.
I'm using TwistedWeb to make a simple JSON HTTP API. I'd like to customize the 404 page so it returns something in JSON rather than the default HTML. How might I do this?
Upvotes: 4
Views: 488
Reputation: 48335
There is no API in Twisted Web like something.set404(someResource)
. A NOT FOUND response is generated as the default when resource traversal reaches a point where the next child does not exist - as indicated by the next IResource.getChildWithDefault
call. Depending on how your application is structured, this means you may want to have your own base class implementing IResource
which creates your custom NOT FOUND resource for all of its subclasses (or, better, make a wrapper since composition is better than inheritance).
If you read the implementation of twisted.web.resource.Resource.getChild
you'll see where the default NOT FOUND behavior comes from and maybe get an idea of how to create your own similar behavior with different content.
Upvotes: 1