Чтобы ответить на ваш вопрос со спецификой, приведенной в комментариях, если я правильно понял;
Объект request
создается при первом запуске сервера Flask
, однако, колба отслеживает стек контекста запроса, где все запросы заканчиваются.
Запрос доступа к стеку, источник
def _lookup_req_object(name):
top = _request_ctx_stack.top
if top is None:
raise RuntimeError(_request_ctx_err_msg)
return getattr(top, name)
Затем колба вызывает конкретную конечную точку для вашего URL, и с этой конечной точки вы можете получить доступ к объекту запроса. Поскольку flask фактически использует объект BaseRequest
из werkzeug, он наследует метод get_data
, который десериализует данные запроса для последующего анализа.
Реализация werkzeug get_data (), источник
def get_data(self, as_text=False):
"""The string representation of the request body. Whenever you call
this property the request iterable is encoded and flattened. This
can lead to unwanted behavior if you stream big data.
This behavior can be disabled by setting
:attr:`implicit_sequence_conversion` to `False`.
If `as_text` is set to `True` the return value will be a decoded
unicode string.
.. versionadded:: 0.9
"""
self._ensure_sequence()
rv = b''.join(self.iter_encoded())
if as_text:
rv = rv.decode(self.charset)
return rv
Конкретный объект запроса снова использует унаследованные миксины, чтобы иметь возможность отличить json от другого контента.
class Request(RequestBase, JSONMixin):
"""The request object used by default in Flask. Remembers the
matched endpoint and view arguments.
It is what ends up as :class:`~flask.request`. If you want to replace
the request object used you can subclass this and set
:attr:`~flask.Flask.request_class` to your subclass.
The request object is a :class:`~werkzeug.wrappers.Request` subclass and
provides all of the attributes Werkzeug defines plus a few Flask
specific ones.
Не стесняйтесь продолжать читать источник, если вы хотите знать больше, чем после моего быстрого исследования времени, или если у вас есть какие-либо вопросы, просто оставьте комментарий.