Основной endpoint для генерации слов с автоматической валидацией. Генерирует случайные комбинации букв и сразу проверяет их существование через Wiktionary API. Использует оптимизированные batch-запросы и многопоточность (до 30 потоков) для максимальной скорости. Все валидные слова автоматически сохраняются в базу данных и учитываются в лидерборде.
Параметры запроса (JSON в теле запроса):
count (int, обязательный) - количество слов для генерации. Диапазон: 1-100.000. Рекомендуется использовать значения от 100 до 10,000 для оптимального баланса скорости и нагрузки.
min_length (int, опциональный, по умолчанию 3) - минимальная длина слова. Диапазон: 1-50. Должно быть меньше или равно max_length.
max_length (int, опциональный, по умолчанию 10) - максимальная длина слова. Диапазон: 1-50. Должно быть больше или равно min_length.
Пример запроса (cURL):
curl -X POST https://babellib.ru/api/generate-and-validate/ \
-H "Content-Type: application/json" \
-d '{
"count": 1000,
"min_length": 3,
"max_length": 10
}'
Пример запроса (JavaScript/Fetch):
fetch('/api/generate-and-validate/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
count: 1000,
min_length: 3,
max_length: 10
})
})
.then(response => response.json())
.then(data => {
console.log('Валидных слов:', data.valid_count);
console.log('Невалидных слов:', data.invalid_count);
console.log('Валидные слова:', data.valid_words);
});
Пример запроса (Python/requests):
import requests
response = requests.post(
'https://babellib.ru/api/generate-and-validate/',
json={
'count': 1000,
'min_length': 3,
'max_length': 10
}
)
data = response.json()
print(f"Валидных: {data['valid_count']}, Невалидных: {data['invalid_count']}")
Структура ответа:
{
"success": true, // Успешность операции
"valid_words": [ // Массив валидных слов (существующих в словаре)
"кот",
"дом",
"вода"
],
"invalid_words": [ // Массив невалидных слов (не существующих)
"йтлр",
"елгйцдь",
"кцию"
],
"valid_count": 3, // Количество валидных слов
"invalid_count": 997, // Количество невалидных слов
"total_generated": 1000 // Общее количество сгенерированных слов
}
Примечания:
- Время обработки зависит от количества слов: ~1-2 секунды для 1000 слов, ~10-20 секунд для 10.000 слов
- Валидные слова автоматически сохраняются в базу данных с обновлением счетчика нахождений
- Слова не сохраняются в сессии — этот endpoint предназначен для внешних клиентов
- Rate limit: 30 запросов в минуту
Генерирует случайные слова без валидации. Работает значительно быстрее, чем /api/generate-and-validate/, так как не выполняет проверку существования слов через Wiktionary API. Полезен для быстрой генерации больших объемов случайных комбинаций букв.
Параметры запроса (JSON):
count (int, 1-1.000) - количество слов для генерации
min_length (int, 1-50, по умолчанию 3) - минимальная длина слова
max_length (int, 1-50, по умолчанию 10) - максимальная длина слова
Пример запроса:
POST /api/generate/
Content-Type: application/json
{
"count": 5000,
"min_length": 4,
"max_length": 8
}
Пример ответа:
{
"success": true,
"words": [
"кот",
"дом",
"вода",
...
],
"count": 5000
}
Примечания:
- Генерация 10,000 слов занимает менее 1 секунды
- Сгенерированные слова сохраняются в сессии для возможности валидации через /api/save/
- Rate limit: 30 запросов в минуту
Сохраняет слово в базу данных. Слово должно быть предварительно сгенерировано через API (сохранено в сессии) и существовать в словаре Wiktionary. При успешном сохранении увеличивается счетчик нахождений слова, и оно может появиться в лидерборде.
Параметры запроса (JSON):
word (string, обязательный) - слово для сохранения. Максимальная длина: 100 символов. Должно содержать только буквы русского алфавита.
Пример запроса:
POST /api/save/
Content-Type: application/json
{
"word": "кот"
}
Пример успешного ответа:
{
"success": true,
"message": "Слово \"кот\" сохранено впервые! 🎉",
"word": "кот",
"found_count": 1,
"is_new": true
}
Пример ответа для повторного сохранения:
{
"success": true,
"message": "Слово \"кот\" найдено повторно! Всего нахождений: 5",
"word": "кот",
"found_count": 5,
"is_new": false
}
Пример ошибки:
{
"success": false,
"error": "Это слово не было сгенерировано на сайте. Сначала сгенерируйте слова."
}
Возможные ошибки:
Слово не указано - параметр word отсутствует или пуст
Слово слишком длинное - превышен лимит в 100 символов
Слово содержит недопустимые символы - обнаружены HTML-символы или спецсимволы
Это слово не было сгенерировано на сайте - слово отсутствует в сессии пользователя
Вы уже сохраняли это слово - попытка повторного сохранения в рамках одной сессии
Это слово не существует в русском языке - слово не найдено в Wiktionary
Rate limit: 20 запросов в минуту
Получает таблицу лидеров с самыми редкими и популярными словами. Слова сортируются по количеству нахождений, а среди слов с одинаковым количеством - по длине (более длинные слова имеют приоритет в списке редких слов).
Параметры запроса (query string):
limit (int, опциональный, по умолчанию 15) - количество слов в каждом топе. Диапазон: 1-1000. Влияет на размер обоих списков (редкие и популярные).
Пример запроса:
GET /api/leaderboard/?limit=20
Структура ответа:
{
"success": true,
"rarest": [ // Список самых редких слов (наименьшее количество нахождений)
{
"text": "редкоеслово",
"found_count": 1 // Количество раз, когда слово было найдено
},
{
"text": "другоередкое",
"found_count": 1
}
],
"popular": [ // Список самых популярных слов (наибольшее количество нахождений)
{
"text": "кот",
"found_count": 42
},
{
"text": "дом",
"found_count": 35
}
],
"unique_words": 1250, // Общее количество уникальных слов в базе данных
"total_found_count": 8430, // Сумма всех нахождений всех слов
"words_by_length": { // Распределение слов по длине
"3": 120,
"4": 340,
"5": 450,
"6": 210,
"7": 80,
"8": 35,
"9": 10,
"10": 5
}
}
Логика сортировки:
- Редкие слова: Сначала по
found_count (по возрастанию), затем по длине слова (по убыванию), затем по дате создания (по убыванию)
- Популярные слова: Сначала по
found_count (по убыванию), затем по дате создания (по убыванию)
Rate limit: 60 запросов в минуту