methods.py 文件源码

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

项目:djaio 作者: Sberned 项目源码 文件源码
def from_http(self, request):
        self.total = None
        self.success = None
        self.errors = []
        self.params = None
        self.output = None
        self.pagination = None
        self.limit = None
        self.offset = None

        if not isinstance(request, web.Request):
            raise web.HTTPBadRequest()

        self.meta = {
            'cookies': getattr(request, 'cookies', {}),
            'headers': getattr(request, 'headers', {})
        }
        req_params = {}
        # if GET or DELETE we read a query params
        if request.method in (METH_GET, METH_DELETE):
            req_params = self.process_request(request.GET)
        # else we read a POST-data
        elif request.method in (METH_PUT, METH_POST):
            try:
                req_params = self.process_request(await request.json())
            except (ValueError, TypeError):
                req_params = self.process_request(await request.post())

        # Here we add or override params by PATH-params.
        # If it exist
        if request.match_info:
            req_params.update(request.match_info.copy())

        self.limit = get_int_or_none(request.headers.get('X-Limit')) or \
                     get_int_or_none(req_params.pop('limit', None)) or \
                     get_int_or_none(request.app.settings.LIMIT)
        self.offset = get_int_or_none(request.headers.get('X-Offset')) or \
                      get_int_or_none(req_params.pop('offset', None)) or \
                      get_int_or_none(request.app.settings.OFFSET)

        self.params = self.validate_params(req_params)
        self.result = []
        self.app = request.app
        self.settings = request.app.settings
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号