API Reference

route

class pylambdarest.route(body_schema: Optional[dict] = None, query_params_schema: Optional[dict] = None)

Lambda handler decorator.

The @route decorator automatically format the response from an handler into the expected API Gateway + Lambda format. It also parses API Gateway’s events into a Request object available as a “request” argument, and optionally provides body and query string parameters schema validation.

Parameters:
  • body_schema (dict) – Optional jsonschema for the request’s body. If the body does not match the provided body_schema, the request will result in a 400 code. For jsonschema specification, please see here.
  • query_params_schema (dict) – Optional jsonschema for the query string parameters. If the query string parameters does not match the provided query_params_schema, the request will result in a 400 code.

Examples

Define a ‘hello’ handler with body schema. A request argument (Request object) can be used in the handler.

>>> user_schema = {
...     "type": "object",
...     "properties": {
...         "name": {"type": "string"}
...     },
...     "required": ["name"],
...     "additionalProperties": False
... }
>>> @route(body_schema=user_schema)
... def hello(request):
...     name = request.json["name"]
...     return 200, {"message" : f"Hello {name} !"}
>>> hello({"body": '{"name": "John Doe"}'}, {})
{'statusCode': 200, 'body': '{"message": "Hello John Doe !"}'}

If the request’s body does not match the schema, a 400 will be sent.

>>> hello({"body": '{}'}, {})
{'statusCode': 400, 'body': '"'name' is a required property"'}

You can define a query_params_schema in the same way as body_schema for query string parameters validation.

Request

class pylambdarest.request.Request(event: dict)

Request objects created in @route handlers, and accessible from within the handler as the “request” argument. It contains parsed information about the API Gateway event.

Parameters:event (dict) – The API Gateway event.
body

Return the raw body field of the API Gateway event.

Examples

>>> event = {"body": '{"name": "John Doe"}'}
>>> Request(event).body
'{"name": "John Doe"}'
headers

Return the request’s headers.

Examples

>>> event = {"headers": {"accept": "*/*"}}
>>> Request(event).headers
{'accept': '*/*'}
json

Return a dict parsed from the body field of the API Gateway event.

Examples

>>> event = {"body": '{"name": "John Doe"}'}
>>> Request(event).json["name"]
'John Doe'
method

Return the request’s HTTP method.

Examples

>>> event = {"httpMethod": "GET"}
>>> Request(event).method
'GET'
path_params

Return the pathParameters field of the API Gateway event.

Examples

>>> event = {"pathParameters": {"user_id": 123}}
>>> Request(event).path_params
{'user_id': 123}
query_params

Return the queryStringParameters field of the API Gateway event.

Examples

>>> event = {"queryStringParameters": {"page": "3"}}
>>> Request(event).query_params
{'page': '3'}