Exceptions handling for layab
To be able to throw exceptions in your code and send a proper HTTP response automatically to your client your need to add error handler(s) to your API and endpoints.
Add all handlers at once
from flask_restplus import Resource
import layaberr
api = None # Your flask-restplus API instance
error_responses = layaberr.add_error_handlers(api)
@api.route("/your_endpoint")
@api.doc(**error_responses)
class YourFlaskRestPlusResource(Resource):
def get(self):
return "test"
Add some handlers
from flask_restplus import Resource
import layaberr
api = None # Your flask-restplus API instance
error_response = layaberr.add_failed_validation_handler(api)
@api.route("/your_endpoint")
class YourFlaskRestPlusResource(Resource):
@api.response(error_response)
def get(self):
return "test"
Supported Exceptions
The following exceptions are handled:
ValidationFailed
In case your endpoint raises ValidationFailed, an HTTP error 400 (Bad Request) will be sent to the client.
Error not specific to a field in received data
This code:
from layaberr import ValidationFailed
received_data = None
raise ValidationFailed(received_data, message="This is the error message")
Will result in the following JSON response sent to the client:
{"fields": [{"item": 1, "field_name": "", "messages": ["This is the error message"]}]}
Error specific to a field in a received dictionary
This code:
from layaberr import ValidationFailed
received_data = {"field 1": "value 1"}
raise ValidationFailed(received_data, errors={"field 1": ["Invalid value"]})
Will result in the following JSON response sent to the client:
{"fields": [{"item": 1, "field_name": "field 1", "messages": ["Invalid value"]}]}
Error specific to a field in a received list of dictionaries
This code:
from layaberr import ValidationFailed
received_data = [{"field 1": "value 1"}, {"field 1": "value 2"}]
raise ValidationFailed(received_data, errors={1: {"field 1": ["Invalid value"]}})
Will result in the following JSON response sent to the client:
{"fields": [{"item": 2, "field_name": "field 1", "messages": ["Invalid value"]}]}
ModelCouldNotBeFound
In case your endpoint raises ModelCouldNotBeFound, an HTTP error 404 (Not Found) will be sent to the client.
This code:
from layaberr import ModelCouldNotBeFound
requested_data = None
raise ModelCouldNotBeFound(requested_data)
Will result in the following JSON response sent to the client:
{"message": "Corresponding model could not be found."}
BadRequest
In case your endpoint raises BadRequest, an HTTP error 400 (Bad Request) will be sent to the client.
This code:
from werkzeug.exceptions import BadRequest
raise BadRequest("The exception message")
Will result in the following JSON response sent to the client:
{"message": "The exception message"}
Unauthorized
In case your endpoint raises Unauthorized, an HTTP error 401 (Unauthorized) will be sent to the client.
This code:
from werkzeug.exceptions import Unauthorized
raise Unauthorized("The exception message")
Will result in the following JSON response sent to the client:
{"message": "The exception message"}
Forbidden
In case your endpoint raises Forbidden, an HTTP error 403 (Forbidden) will be sent to the client.
This code:
from werkzeug.exceptions import Forbidden
raise Forbidden("The exception message")
Will result in the following JSON response sent to the client:
{"message": "The exception message"}
Exception (this is the default handler)
In case your endpoint raises an Exception, an HTTP error 500 (Internal Server Error) will be sent to the client.
This code:
raise Exception("The exception message")
Will result in the following JSON response sent to the client:
{"message": "The exception message"}
How to install
- python 3.6+ must be installed
- Use pip to install module:
python -m pip install layaberr
Metadata
Release files for layaberr 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| layaberr-2.2.0.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| layaberr-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.4 kB
Release files / layaberr-2.2.0.tar.gz
| Download URL | layaberr-2.2.0.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9347cbd3e14e1aca4f0480864302bc40ae2d4eae69f9459316b2b6c537ad2a2
|
|
BLAKE2b-256 checksum How to use checksums |
c3c3cea72d9fdc943cd01a35c14c86f96729bc800d39eef066f00ef8bdb9bfd7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.7
|
Release files / layaberr-2.2.0-py3-none-any.whl
| Download URL | layaberr-2.2.0-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4eb7f3484c71d4071fc81e7fd7b6d201ad667454a2c082c3e51fdbfa9eb59b28
|
|
BLAKE2b-256 checksum How to use checksums |
6b47b2ac0f88ae79d2b3b5ff4f122096ef56bc74a09f7b78307ee78eea20972e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.7
|