Unmarshalling is the process of converting a primitive schema type of value into a higher-level object based on a format keyword. All request/response data, that can be described by a schema in OpenAPI specification, can be unmarshalled.
Unmarshallers firstly validate data against the provided schema (See :doc:`validation`).
Openapi-core comes with a set of built-in format unmarshallers:
date- converts string into a date object,date-time- converts string into a datetime object,binary- converts string into a byte object,uuid- converts string into an UUID object,byte- decodes Base64-encoded string.
You can also define your own format unmarshallers (See :doc:`customizations/extra_format_unmarshallers`).
Use unmarshal_request method to validate and unmarshal request data against a given spec. By default, OpenAPI spec version is detected:
# raises error if request is invalid
result = openapi.unmarshal_request(request)Request object should implement OpenAPI Request protocol (See :doc:`integrations/index`).
Note
Webhooks feature is part of OpenAPI v3.1 only
Use the same method to validate and unmarshal webhook request data against a given spec.
# raises error if request is invalid
result = openapi.unmarshal_request(webhook_request)Webhook request object should implement OpenAPI WebhookRequest protocol (See :doc:`integrations/index`).
Retrieve validated and unmarshalled request data
# get parameters
path_params = result.parameters.path
query_params = result.parameters.query
cookies_params = result.parameters.cookies
headers_params = result.parameters.headers
# get body
body = result.body
# get security data
security = result.securityYou can also define your own request unmarshaller (See :doc:`customizations/request_unmarshaller_cls`).
Use unmarshal_response method to validate and unmarshal response data against a given spec. By default, OpenAPI spec version is detected:
# raises error if response is invalid
result = openapi.unmarshal_response(request, response)Response object should implement OpenAPI Response protocol (See :doc:`integrations/index`).
Note
Webhooks feature is part of OpenAPI v3.1 only
Use the same method to validate and unmarshal response data from webhook request against a given spec.
# raises error if request is invalid
result = openapi.unmarshal_response(webhook_request, response)Retrieve validated and unmarshalled response data
# get headers
headers = result.headers
# get data
data = result.dataYou can also define your own response unmarshaller (See :doc:`customizations/response_unmarshaller_cls`).