Библия. Очень простой и быстрый API на Rust

Простой API-сервис для чтения Библии и поиска по тексту. Написан на Rust без веб-фреймворков: используется стандартный TcpListener, api.aibible.ru.

URL Адрес API

API готово для использования: api.aibible.ru

Для самостоятельного развертывания

Код и документация на GitVerse: https://gitverse.ru/pavstyuk/bible_api_rust

Переводы

Параметр get-запроса translation
Код Описание
rbo Русский текст. Используется по умолчанию.
rst Русский текст.
nasb Английский текст (New American Standard Bible).

В каждом файле 66 книг. Названия книг в русских переводах русские, в nasb — английские.

Книги Библии

Параметр get-запроса book

Названия книг для параметра book. Регистр не важен. Порядок строк — канонический; в JSON-файлах русских переводов порядок книг после Деяний отличается, но названия те же.

Русское название Английское название (nasb)
Бытие Genesis
Исход Exodus
Левит Leviticus
Числа Numbers
Второзаконие Deuteronomy
Иисус Навин Joshua
Судьи Judges
Руфь Ruth
1 Царств 1 Samuel
2 Царств 2 Samuel
3 Царств 1 Kings
4 Царств 2 Kings
1 Паралипоменон 1 Chronicles
2 Паралипоменон 2 Chronicles
Ездра Ezra
Неемия Nehemiah
Есфирь Esther
Иов Job
Псалтирь Psalms
Притчи Proverbs
Екклесиаст Ecclesiastes
Песня Песней Song of Solomon
Исаия Isaiah
Иеремия Jeremiah
Плач Иеремии Lamentations
Иезекииль Ezekiel
Даниил Daniel
Осия Hosea
Иоиль Joel
Амос Amos
Авдий Obadiah
Иона Jonah
Михей Micah
Наум Nahum
Аввакум Habakkuk
Софония Zephaniah
Аггей Haggai
Захария Zechariah
Малахия Malachi
Матфей Matthew
Марк Mark
Лука Luke
Иоанн John
Деяния Acts
Римлянам Romans
1 Коринфянам 1 Corinthians
2 Коринфянам 2 Corinthians
Галатам Galatians
Ефесянам Ephesians
Филиппийцам Philippians
Колоссянам Colossians
1 Фессалоникийцам 1 Thessalonians
2 Фессалоникийцам 2 Thessalonians
1 Тимофею 1 Timothy
2 Тимофею 2 Timothy
Титу Titus
Филимону Philemon
Евреям Hebrews
Иаков James
1 Петра 1 Peter
2 Петра 2 Peter
1 Иоанна 1 John
2 Иоанна 2 John
3 Иоанна 3 John
Иуда Jude
Откровение Revelation

В rbo книга называется «Софония», в rst — «Софоний». Остальные русские названия в этих файлах совпадают.

Эндпоинты

JSON в примерах ниже отформатирован с отступами для читаемости; сервер возвращает компактный JSON.

GET / — один стих

Возвращает текст одного стиха.

Параметр Обязателен По умолчанию Описание
translation нет rbo Код перевода: rbo, rst или nasb.
book нет Иоанн (для nasb — John) Название книги.
chapter нет 1 Номер главы.
verse нет 1 Номер стиха.

Пример:

curl 'https://api.aibible.ru/?translation=nasb&book=John&chapter=3&verse=16'

Ответ:

{
  "info": "John 3:16",
  "text": "“For God so loved the world, that He gave His only Son, so that everyone who believes in Him will not perish, but have eternal life.",
  "translation": "nasb"
}

Поля ответа:

  • text — текст стиха; переводы строк заменены пробелами.
  • info — каноническое название книги, глава и стих.
  • translation — код перевода.

Название книги сравнивается без учёта регистра. Первая буква может быть строчной, а цифру в начале названия можно писать слитно: 1коринфянам будет распознано как 1 Коринфянам.

GET /search — поиск по тексту

Ищет подстроку во всех стихах выбранного перевода. Поиск не учитывает регистр. Если книга не указана, поиск идёт по всей Библии.

Параметр Обязателен По умолчанию Описание
query да — Строка поиска длиной от 3 до 100 символов.
translation нет rbo Код перевода.
book нет все книги Ограничить поиск одной книгой.

Пример с русским текстом:

curl -G 'https://api.aibible.ru/search' \
  --data-urlencode 'query=начале' \
  --data-urlencode 'book=Бытие'

Ответ:

{
  "count": 1,
  "query": "начале",
  "results": [
    {
      "info": "Бытие 1:1",
      "text": "В начале сотворил Бог небо и землю.",
      "translation": "rbo"
    }
  ]
}

Поля ответа:

  • results — массив найденных стихов.
  • count — количество найденных стихов.
  • query — исходная строка поиска.

Каждый элемент results содержит те же поля, что и ответ GET /: text, info, translation. Если ничего не найдено, возвращается 200 OK с пустым массивом и count: 0. Ограничения на количество результатов и постраничной выдачи нет.

Ошибки

Код Тело ответа Когда возникает
400 {"error": "Query is empty"} Параметр query не задан или пуст.
400 {"error": "Query is too short"} В query меньше 3 символов.
400 {"error": "Query is too long"} В query больше 100 символов.
404 {"error": "Unknown translation"} Неизвестный код перевода в GET /.
404 {"error": "Unknown book"} Книга не найдена.
404 {"error": "Unknown chapter"} Глава не найдена.
404 {"error": "Unknown verse"} Стих не найден.
404 404 Not Found (text/plain) Неизвестный путь.

Пример ошибки:

curl 'https://api.aibible.ru/search?query=ab'
{"error": "Query is too short"}