Каково назначение query-параметров в URL?

Ответ

Query-параметры (параметры запроса) — это часть URL, идущая после знака ?, которая позволяет передавать на сервер данные в формате ключ=значение. Они не меняют сам маршрут (endpoint), а уточняют запрос к нему.

Основные сценарии использования:

  • Фильтрация: Отбор данных по определенным критериям. GET /api/products?category=electronics&in_stock=true
  • Сортировка: Указание поля и порядка сортировки. GET /api/articles?sort_by=date&order=desc
  • Пагинация: Разделение большого объема данных на страницы. GET /api/comments?page=2&limit=20
  • Поиск: Передача поискового запроса. GET /api/search?q=python+async

Пример реализации в FastAPI:

from fastapi import FastAPI
from typing import Optional

app = FastAPI()

# q - опциональный query-параметр
@app.get("/items/")
async def read_items(q: Optional[str] = None):
    if q:
        return {"search_query": q}
    return {"items": ["Item1", "Item2"]}

Пример получения в Django:

from django.http import JsonResponse

def item_list(request):
    # request.GET - это словарь с query-параметрами
    # .get('q', None) безопасно извлекает значение или возвращает None
    search_term = request.GET.get('q', None)

    if search_term:
        # Логика поиска по search_term...
        return JsonResponse({"filtered_by": search_term})

    # Логика для возврата всех элементов
    return JsonResponse({"items": ["Item1", "Item2"]})

В отличие от параметров пути (path parameters), которые идентифицируют конкретный ресурс (например, /users/123), query-параметры модифицируют или уточняют запрос к коллекции ресурсов.