Ответ
Query-параметры (параметры запроса) — это часть URL, используемая для передачи данных на сервер в виде пар ключ=значение. Они следуют за знаком вопроса (?) и разделяются амперсандом (&).
Они не изменяют сам ресурс (путь), а уточняют запрос к нему.
Основные сценарии использования:
- Фильтрация:
?status=active&author_id=123 - Сортировка:
?sort_by=date&order=desc - Пагинация:
?page=2&limit=10 - Поиск:
?q=fastapi+tutorial
Пример URL:
https://api.example.com/items?limit=20&sort_by=price&status=available
Пример обработки в FastAPI (Python):
FastAPI автоматически извлекает, преобразует и валидирует параметры из URL на основе аннотаций типов.
from fastapi import FastAPI
from typing import Optional
app = FastAPI()
@app.get("/items/")
async def read_items(q: Optional[str] = None, limit: int = 10, is_active: bool = True):
"""
Принимает параметры:
- q: необязательная строка для поиска
- limit: целочисленный лимит (по умолчанию 10)
- is_active: булевый флаг (по умолчанию True)
"""
query_params = {"q": q, "limit": limit, "is_active": is_active}
# ... логика фильтрации данных на основе query_params ...
return {"params_received": query_params}
# Пример запроса к этому эндпоинту:
# /items/?q=my-item&limit=50&is_active=false
Ключевые характеристики:
- Они видны в URL, поэтому не подходят для передачи конфиденциальных данных (паролей, токенов).
- Всегда передаются как строки, и сервер отвечает за их преобразование в нужные типы (например,
int,bool). - Являются стандартным и универсальным способом уточнения GET-запросов.
Ответ 18+ 🔞
Давай разберём, что это за зверь такой — query-параметры. Представь, что ты заходишь в интернет-магазин, как в ларёк, и говоришь продавцу: «Дайте мне три шаурмы, но только острую, и чтобы с двойным сыром». Вот эти твои пожелания — «три», «острая», «двойной сыр» — это и есть query-параметры, сука! Они не меняют сам магазин, а просто уточняют, какую именно хуйню ты хочешь получить.
Где они живут в адресе?
Прямо после знака вопроса (?), как грязь под ногтями. Если параметров несколько, они цепляются друг за друга амперсандом (&), словно пьяная компания.
Пример URL, чтоб ты понимал масштаб:
https://api.shawarma-palace.com/orders?count=3&spicy=true&cheese=double
Зачем они, блядь, нужны?
- Отфильтровать хуйню:
?status=active&author=admin— покажи только активное и от админа. - Отсортировать как человек:
?sort=price&order=desc— дай самое дорогое сначала, я не нищий. - Разбить на страницы, чтоб не сдохнуть:
?page=5&limit=20— дай пятую пачку по 20 штук. - Найти что-то в этой свалке:
?search=fastapi+guide— ищи мне гайд, а не левые видео с котиками.
А вот как это выглядит в коде на FastAPI, если ты вдруг решил стать backend-разработчиком:
from fastapi import FastAPI
from typing import Optional
app = FastAPI()
@app.get("/items/")
async def read_items(q: Optional[str] = None, limit: int = 10, is_active: bool = True):
"""
Принимает параметры:
- q: необязательная строка для поиска
- limit: целочисленный лимит (по умолчанию 10)
- is_active: булевый флаг (по умолчанию True)
"""
query_params = {"q": q, "limit": limit, "is_active": is_active}
# ... логика фильтрации данных на основе query_params ...
return {"params_received": query_params}
# Пример запроса к этому эндпоинту:
# /items/?q=my-item&limit=50&is_active=false
Смотри, какая магия: ты просто объявляешь параметры в функции, а FastAPI сам, как хитрая жопа, выковыривает их из URL, преобразует в нужный тип (число, булево значение) и валидирует. Красота, ёпта!
Важное предупреждение, чтоб ты не обосрался:
- Они видны всем в адресной строке. Никогда, слышишь, НИКОГДА не пихай туда пароли, токены или номер своей кредитки! Это как кричать о своём PIN-коде в переполненном автобусе.
- Все значения приходят как строки, но твой фреймворк (если он не говно) должен уметь превращать их в числа, даты и прочую полезную хуйню.
- Это стандартный, универсальный способ настрогать GET-запрос по своему вкусу. Пользуйся, но с умом, а то мало ли.