'WSGI method that controls (de)serialization and method dispatch.'

@webob.dec.wsgify(RequestClass=Request)
def __call__(self, request):

    LOG.info('%(method)s    %(url)s', {'method': request.method, 'url': request.url})
    if self.support_api_request_version:
        try:
            request.set_api_version_request(request.url)
        except exception.InvalidAPIVersionString as e:
            return Fault(webob.exc.HTTPBadRequest(explanation=six.text_type(e)))
        except exception.InvalidGlobalAPIVersion as e:
            return Fault(webob.exc.HTTPNotAcceptable(explanation=six.text_type(e)))
    action_args = self.get_action_args(request.environ)
    action = action_args.pop('action', None)
    (content_type, body) = self.get_body(request)
    accept = request.best_match_content_type()
    return self._process_stack(request, action, action_args, content_type, body, accept)
