def handle(self, data, **kwargs):
        """Run marshalling for the specified mapper_class.

        Supports both .marshal and .many().marshal Kim interfaces.  Handles errors raised
        during marshalling and automatically returns a HTTP error response.

        :param data: Data to be marshaled.
        :returns: Marshaled object according to mapper configuration
        :raises: :class:`werkzeug.exceptions.UnprocessableEntity`
        """
        try:
            if self.many:
                return self.mapper.many(raw=self.raw, **self.mapper_kwargs).marshal(
                    data, role=self.role
                )
            else:
                return self.mapper(
                    data=data,
                    obj=self.obj,
                    partial=self.partial,
                    **self.mapper_kwargs
                ).marshal(role=self.role)
        except MappingInvalid as e:
            self.handle_error(e)