wsgi.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:masakari 作者: openstack 项目源码 文件源码
def __call__(self, request):
        """WSGI method that controls (de)serialization and method dispatch."""

        if self.support_api_request_version:
            # Set the version of the API requested based on the header
            try:
                request.set_api_version_request()
            except exception.InvalidAPIVersionString as e:
                return Fault(webob.exc.HTTPBadRequest(
                    explanation=e.format_message()))
            except exception.InvalidGlobalAPIVersion as e:
                return Fault(webob.exc.HTTPNotAcceptable(
                    explanation=e.format_message()))

        # Identify the action, its arguments, and the requested
        # content type
        action_args = self.get_action_args(request.environ)
        action = action_args.pop('action', None)

        # NOTE: we filter out InvalidContentTypes early so we
        # know everything is good from here on out.
        try:
            content_type, body = self.get_body(request)
            accept = request.best_match_content_type()
        except exception.InvalidContentType:
            msg = _("Unsupported Content-Type")
            return Fault(webob.exc.HTTPUnsupportedMediaType(explanation=msg))

        # NOTE: Splitting the function up this way allows for
        #       auditing by external tools that wrap the existing
        #       function.  If we try to audit __call__(), we can
        #       run into troubles due to the @webob.dec.wsgify()
        #       decorator.
        return self._process_stack(request, action, action_args,
                                   content_type, body, accept)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号