Home / Function/ request_params_to_args() — fastapi Function Reference

request_params_to_args() — fastapi Function Reference

Architecture documentation for the request_params_to_args() function in utils.py from the fastapi codebase.

Entity Profile

Dependency Diagram

graph TD
  0b6a77bd_97c7_05f8_56cd_a3e6fa8af276["request_params_to_args()"]
  9e602cbf_3139_86ae_5666_97b8806942de["utils.py"]
  0b6a77bd_97c7_05f8_56cd_a3e6fa8af276 -->|defined in| 9e602cbf_3139_86ae_5666_97b8806942de
  fc3220b9_b8bc_99f6_605f_911723c78183["solve_dependencies()"]
  fc3220b9_b8bc_99f6_605f_911723c78183 -->|calls| 0b6a77bd_97c7_05f8_56cd_a3e6fa8af276
  0f3cd5cf_3aea_6cfe_477e_4813f1243d25["get_validation_alias()"]
  0b6a77bd_97c7_05f8_56cd_a3e6fa8af276 -->|calls| 0f3cd5cf_3aea_6cfe_477e_4813f1243d25
  cd9f411c_484c_7d25_1807_29f71d341257["_get_multidict_value()"]
  0b6a77bd_97c7_05f8_56cd_a3e6fa8af276 -->|calls| cd9f411c_484c_7d25_1807_29f71d341257
  af90f630_e23a_6963_9a62_0bf9e44f6742["_validate_value_with_model_field()"]
  0b6a77bd_97c7_05f8_56cd_a3e6fa8af276 -->|calls| af90f630_e23a_6963_9a62_0bf9e44f6742
  style 0b6a77bd_97c7_05f8_56cd_a3e6fa8af276 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

fastapi/dependencies/utils.py lines 754–836

def request_params_to_args(
    fields: Sequence[ModelField],
    received_params: Union[Mapping[str, Any], QueryParams, Headers],
) -> tuple[dict[str, Any], list[Any]]:
    values: dict[str, Any] = {}
    errors: list[dict[str, Any]] = []

    if not fields:
        return values, errors

    first_field = fields[0]
    fields_to_extract = fields
    single_not_embedded_field = False
    default_convert_underscores = True
    if len(fields) == 1 and lenient_issubclass(
        first_field.field_info.annotation, BaseModel
    ):
        fields_to_extract = get_cached_model_fields(first_field.field_info.annotation)
        single_not_embedded_field = True
        # If headers are in a Pydantic model, the way to disable convert_underscores
        # would be with Header(convert_underscores=False) at the Pydantic model level
        default_convert_underscores = getattr(
            first_field.field_info, "convert_underscores", True
        )

    params_to_process: dict[str, Any] = {}

    processed_keys = set()

    for field in fields_to_extract:
        alias = None
        if isinstance(received_params, Headers):
            # Handle fields extracted from a Pydantic Model for a header, each field
            # doesn't have a FieldInfo of type Header with the default convert_underscores=True
            convert_underscores = getattr(
                field.field_info, "convert_underscores", default_convert_underscores
            )
            if convert_underscores:
                alias = get_validation_alias(field)
                if alias == field.name:
                    alias = alias.replace("_", "-")
        value = _get_multidict_value(field, received_params, alias=alias)
        if value is not None:
            params_to_process[get_validation_alias(field)] = value
        processed_keys.add(alias or get_validation_alias(field))

    for key in received_params.keys():
        if key not in processed_keys:
            if hasattr(received_params, "getlist"):
                value = received_params.getlist(key)
                if isinstance(value, list) and (len(value) == 1):
                    params_to_process[key] = value[0]
                else:
                    params_to_process[key] = value
            else:
                params_to_process[key] = received_params.get(key)

    if single_not_embedded_field:
        field_info = first_field.field_info
        assert isinstance(field_info, params.Param), (
            "Params must be subclasses of Param"
        )
        loc: tuple[str, ...] = (field_info.in_.value,)
        v_, errors_ = _validate_value_with_model_field(
            field=first_field, value=params_to_process, values=values, loc=loc
        )
        return {first_field.name: v_}, errors_

    for field in fields:
        value = _get_multidict_value(field, received_params)
        field_info = field.field_info
        assert isinstance(field_info, params.Param), (
            "Params must be subclasses of Param"
        )
        loc = (field_info.in_.value, get_validation_alias(field))
        v_, errors_ = _validate_value_with_model_field(
            field=field, value=value, values=values, loc=loc
        )
        if errors_:
            errors.extend(errors_)
        else:

Subdomains

Frequently Asked Questions

What does request_params_to_args() do?
request_params_to_args() is a function in the fastapi codebase, defined in fastapi/dependencies/utils.py.
Where is request_params_to_args() defined?
request_params_to_args() is defined in fastapi/dependencies/utils.py at line 754.
What does request_params_to_args() call?
request_params_to_args() calls 3 function(s): _get_multidict_value, _validate_value_with_model_field, get_validation_alias.
What calls request_params_to_args()?
request_params_to_args() is called by 1 function(s): solve_dependencies.

Analyze Your Own Codebase

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

Try Supermodel Free