Home / Class/ Request Class — requests Architecture

Request Class — requests Architecture

Architecture documentation for the Request class in models.py from the requests codebase.

Entity Profile

Dependency Diagram

graph TD
  075eaa90_3b36_3d32_fc50_b57c7c8fe638["Request"]
  95bd3ad9_fc53_a808_b595_bd723df9bdcd["RequestHooksMixin"]
  075eaa90_3b36_3d32_fc50_b57c7c8fe638 -->|extends| 95bd3ad9_fc53_a808_b595_bd723df9bdcd
  461bc6e0_32e7_8eab_ec87_7226e7be0d13["models.py"]
  075eaa90_3b36_3d32_fc50_b57c7c8fe638 -->|defined in| 461bc6e0_32e7_8eab_ec87_7226e7be0d13
  a9a27ab4_fcfa_3217_4d25_ed320e4fa77a["__init__()"]
  075eaa90_3b36_3d32_fc50_b57c7c8fe638 -->|method| a9a27ab4_fcfa_3217_4d25_ed320e4fa77a
  23c5174e_61d8_b8a8_82a8_1e4e180503b1["__repr__()"]
  075eaa90_3b36_3d32_fc50_b57c7c8fe638 -->|method| 23c5174e_61d8_b8a8_82a8_1e4e180503b1
  2b8e3c1b_1e51_43b6_6d22_360c4395b029["prepare()"]
  075eaa90_3b36_3d32_fc50_b57c7c8fe638 -->|method| 2b8e3c1b_1e51_43b6_6d22_360c4395b029

Relationship Graph

Source Code

src/requests/models.py lines 232–312

class Request(RequestHooksMixin):
    """A user-created :class:`Request <Request>` object.

    Used to prepare a :class:`PreparedRequest <PreparedRequest>`, which is sent to the server.

    :param method: HTTP method to use.
    :param url: URL to send.
    :param headers: dictionary of headers to send.
    :param files: dictionary of {filename: fileobject} files to multipart upload.
    :param data: the body to attach to the request. If a dictionary or
        list of tuples ``[(key, value)]`` is provided, form-encoding will
        take place.
    :param json: json for the body to attach to the request (if files or data is not specified).
    :param params: URL parameters to append to the URL. If a dictionary or
        list of tuples ``[(key, value)]`` is provided, form-encoding will
        take place.
    :param auth: Auth handler or (user, pass) tuple.
    :param cookies: dictionary or CookieJar of cookies to attach to this request.
    :param hooks: dictionary of callback hooks, for internal usage.

    Usage::

      >>> import requests
      >>> req = requests.Request('GET', 'https://httpbin.org/get')
      >>> req.prepare()
      <PreparedRequest [GET]>
    """

    def __init__(
        self,
        method=None,
        url=None,
        headers=None,
        files=None,
        data=None,
        params=None,
        auth=None,
        cookies=None,
        hooks=None,
        json=None,
    ):
        # Default empty dicts for dict params.
        data = [] if data is None else data
        files = [] if files is None else files
        headers = {} if headers is None else headers
        params = {} if params is None else params
        hooks = {} if hooks is None else hooks

        self.hooks = default_hooks()
        for k, v in list(hooks.items()):
            self.register_hook(event=k, hook=v)

        self.method = method
        self.url = url
        self.headers = headers
        self.files = files
        self.data = data
        self.json = json
        self.params = params
        self.auth = auth
        self.cookies = cookies

    def __repr__(self):
        return f"<Request [{self.method}]>"

    def prepare(self):
        """Constructs a :class:`PreparedRequest <PreparedRequest>` for transmission and returns it."""
        p = PreparedRequest()
        p.prepare(
            method=self.method,
            url=self.url,
            headers=self.headers,
            files=self.files,
            data=self.data,
            json=self.json,
            params=self.params,
            auth=self.auth,
            cookies=self.cookies,
            hooks=self.hooks,
        )
        return p

Domain

Frequently Asked Questions

What is the Request class?
Request is a class in the requests codebase, defined in src/requests/models.py.
Where is Request defined?
Request is defined in src/requests/models.py at line 232.
What does Request extend?
Request extends RequestHooksMixin.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free