/RestTranslatorService

Приложение является REST сервисом для получения пословного перевода текстовой строки с помощью Yandex API.

Primary LanguageJava

REST Yandex API Translator

Данный проект является тестовым (учебным) проектом.



cover


Навигация:

1. Описание
2. Сборка и старт
3. Взаимодействие с приложением
4. Автор


Java Spring H2 Memory base YANDEX API


Приложение является REST сервисом для получения пословного перевода текстовой строки с помощью Yandex API.
Реализация написана на JAVA + Spring Boot. Взаимодействие с базой данных осуществляется с помощью низкоуровневого JDBC API. Hibernate не используется.

Во время работы происходит запись в базу следующих данных:

  1. ID запроса (PRIMARY KEY AUTO_INCREMENT)
  2. Входную строку
  3. Строку с переводом
  4. Язык, с которого осуществляется перевод
  5. Языка, на который осуществляется перевод
  6. Время запроса
  7. IP клиента, который выполняет запрос

В дополнительную таблицу записываются пары слово-перевод, которые связаны с индификатором запроса посредством FOREIGN KEY к основной таблице.


Сборка и старт.

  1. Клонируйте репозиторий:
    git clone https://github.com/grishuchkov/RestTranslatorService.git

  2. Введите свои настройки в: application.yml
    Необходимо ввести свой Token для Yandex Cloud API.
    Внести изменения в настройки БД, если необходимо.

  3. Для сборки проекта используйте: ./mvnw clean package.

    Это создает RestTranslatorService-0.0.1-SNAPSHOT.jar файл в каталоге ./targer
    Приложение теперь доступно для запуска с использованием java -jar target/RestTranslatorService-0.0.1-SNAPSHOT.jar

  4. В проекте присутствует Dockerfile, благодаря которому можно создать Docker Image.
    Для этого используйте команду: docker build -t rest-yandex-translator:0.0.1 .

    Если у вас MacOS в этот момент в обязательном порядке должен быть запущен Docker Desktop

  5. Чтобы запустить контейнер, необходимо прописать: docker run -p 8500:9000 rest-yandex-translator:0.0.1 Обратите внимание на порты. В application.yml порт по умолчанию стоит как: 9000

  6. Все должно работать.


Взаимодействие с приложением осуществляется путём HTTP запроса. На данный момент реализован один POST запрос, в тело которого нужно передать JSON c необходимыми данными (строка для перевода, язык строки, язык, на который нужно перевести). В ответе приходит JSON с пословно переведенной строкой.

Тип запроса Путь Примечание
POST ./translate На вход JSON, на выход JSON

Пример запроса ./translate:

В тело передаем:

{
    "text" : "Тестовый перевод для README, спасибо, что читаете это",
    "languageFrom" : "ru",
    "languageTo" : "en"
}

В ответ получаем:

{
    "translatedText": "Test translation for README thanks what reading this"
}

Для проверки корректной записи в базу можно воспользоваться встроенной консолью, доступ к которой огранизуется по адресу: ./h2-console

Для входа нужно прописать значения из конфиг-файла application.yml. По умолчанию поля следующие:

Поле Значение
URL jdbc:h2:mem:maindb
username root
password root

Автор: Grishuchkov Danila

Проект создан при поддержке зеленого чая, Яндекс.Музыки и мотивации что-то сделать.
Срок выполнения: 4 дня.
Тинькофф, 💛💛💛❗