RFC-7807 Error documents for Tornado
Project description
This library provides a version of tornado.web.RequestHandler.send_error that speaks application/problem+json instead of HTML. The easiest way to use this library is to inherit from problemdetails.ErrorWriter and call send_error() with additional parameters.
from tornado import web
import problemdetails
class MyHandler(problemdetails.ErrorWriter, web.RequestHandler):
def get(self):
try:
self.do_something_hard()
except SomeException as error:
self.send_error(500, title="Failed to do_something_hard")
HTTP/1.1 500 Internal Server Error
Content-Type: application/problem+json
{
"title": "Failed to do_something_hard",
"type": "https://tools.ietf.org/html/rfc7231#section-6.6.1"
}
As an alternative, you can raise a problemdetails.Problem instance and let the Tornado exception handling take care of eventually calling write_error. The following snippet produces the same output as the previous example.
from tornado import web
import problemdetails
class MyHandler(problemdetails.ErrorWriter, web.RequestHandler):
def get(self):
if not self.do_something_hard():
raise problemdetails.Problem(status_code=500,
title='Failed to do_something_hard')
The problemdetails.Problem instance passes all of the keyword parameters through in the resulting message so it is very easy to add fields. The interface of tornado.web.RequestHandler.send_error is less expressive since keyword parameters may be swallowed by intervening code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tornado-problem-details-0.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08eb53f110fd36695ef10a5e4634e8005a6348f9026a209bea27b1139acaccde |
|
MD5 | f4971883725082df797cf6a30c98af85 |
|
BLAKE2b-256 | 9365ffd2ad7c23e8f469a788a9a9e749041279849d15a1cec05b3b2fe4d838bb |
Hashes for tornado_problem_details-0.0.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b904be6fde44b1312fba7ff8a8d343c4bff8b2f538e9de81f0f5f887a283ea2 |
|
MD5 | 1e0286828f77210609b4d3c8063e678c |
|
BLAKE2b-256 | b3107ad8911ae36ba72849a8c3cbb2219571930c34b1cf2bcc7fbdad49fd3107 |