Middleware API
Auth and content negotiation middlewares.
-
class
api.middlewares.auth_middleware.AuthMiddleware(prefix, tokens, noauth_routes=None)[source]
Token based authentication that uses two HTTP headers: X-Project-ID and X-Auth-Token.
-
process_request(req, resp)[source]
| Parameters: |
- req (falcon.request.Request) – Falcon request
- resp (falcon.response.Response) – Falcon response
|
:raises falcon.HTTPUnauthorized
-
class
api.middlewares.json_middleware.JSONTranslator[source]
Converts request input data and response to/from JSON.
-
process_request(req, resp)[source]
Converts request input data from JSON to a dict.
:param req: Falcon request
:type req: falcon.request.Request
| Parameters: | resp (falcon.response.Response) – Falcon response |
-
process_response(req, resp, resource, req_succeeded)[source]
Converts response body to JSON.
:param req: Falcon request
:type req: falcon.request.Request
| Parameters: |
- resp (falcon.response.Response) – Falcon response
- resource (api.resources.base.BaseResource) –
- req_succeeded (bool) –
|
-
exception
api.middlewares.json_middleware.JsonError[source]
Converts all exceptions to falcon.HTTPError so they’re serializable and match requested content type.
Usage:
app.add_error_handler(Exception, JsonError.handle)
-
static
handle(ex, req, resp, params)[source]
| Parameters: |
- ex (Exception) – the exception
- req (falcon.request.Request) – Falcon request
- resp (falcon.response.Response) – Falcon response
- params (dict) – parameters dict
|
:raises falcon.HTTPError
-
class
api.middlewares.json_middleware.RequireJSON[source]
Checks if the request has required content type and client accepts a JSON response.
-
process_request(req, resp)[source]
| Parameters: |
- req (falcon.request.Request) – Falcon request
- resp (falcon.response.Response) – Falcon response
|
-
exception
api.middlewares.html_middleware.HtmlError(translator)[source]
Renders a HTML template containing error details.
Usage:
handler = HtmlError(translator)
app.add_error_handler(Exception, handler.handle)
-
handle(ex, req, resp, params)[source]
| Parameters: |
- ex (Exception) – the exception
- req (falcon.request.Request) – Falcon request
- resp (falcon.response.Response) – Falcon response
- params (dict) – parameters dict
|
-
class
api.middlewares.html_middleware.HtmlTranslator(template_env)[source]
Parses POST data in requests and renders HTML in responses using Jinja templates.
When using plain HTML pages for resources it’s not possible to use other HTTP verbs than GET and POST.
Extra steps needs to be taken when preparing resources:
- set RELATIONS_AS_LIST = True
- add a templates property with a verb to file map, possibly using objects_class argument in init()
- call on_post() in on_put()
- perform a redirect after on_post():
resp.status = HTTP_FOUND; resp.set_header('Location', req.path)
-
static
get_template_vars(base_vars, req)[source]
| Parameters: |
- base_vars (dict) –
- req (falcon.request.Request) – Falcon request
|
| Returns: |
|
| Return type: | dict
|
-
process_resource(req, resp, resource, params)[source]
| Parameters: |
- req (falcon.request.Request) – Falcon request
- resp (falcon.response.Response) – Falcon response
- resource (api.resources.base.BaseCollectionResource|api.resources.base.BaseSingleResource) –
- params (dict) – parameters dict
|
-
process_response(req, resp, resource)[source]
| Parameters: |
- req (falcon.request.Request) – Falcon request
- resp (falcon.response.Response) – Falcon response
- resource (reviews.resources.TemplateCollectionResource|reviews.resources.TemplateSingleResource) –
|