Создание простейшего веб-приложения на Roda
Цель занятия: научиться создавать простые веб-приложения, принимающие ввод данных от пользователя.
При разработке приложения следуйте модели расположения файлов для маленьких приложений, описанной в официальной документации.
Обработка различных запросов
В рамках данной задачи вам необходимо научиться обрабатывать различные HTTP-пути с помощью RODA
- Реализуйте обработчик для пути /hello. Он должен возвращать строкуЗдравствуйте!.
- Реализуйте обработчик для пути /get/rng. Он должен возвращать строкуСлучайное значение: 535, где число — случайное значение в диапазоне от 100 до 5000.
- Реализуйте обработчик для пути /cool/hello/NAME/SURNAME. Он должен возвращать строкуЗдравствуйте, NAME SURNAME!.
- Реализуйте обработчик для пути /calc/min/NUM_ONE/NUM_TWO. Он должен возвращать минимальное значение из двух целых чисел, переданных в качестве значенийNUM_ONEиNUM_TWO. Пример запроса:/calc/min/500/-100/
- Реализуйте обработчик для пути /calc/multiply/NUM_ONE/NUM_TWO. Он должен возвращать результат перемножения двух чисел, переданных в качестве значений путиNUM_ONEиNUM_TWO. Пример запроса:/calc/multiply/6.5/5.5. Приложение должно корректно обрабатывать ситуации, когда в качестве вещественных чисел были переданы строки.
- Реализуйте обработчик для пути /get/sophisticated/rng. Он принимает пару аргументов:minиmax. Аргументы контролируют минимальные и максимальные значения для генератора случайных чисел. Маршрут должен корректно обрабатывать ситуации, когда- не были переданы данные аргументы, надо сообщать об этом пользователю;
- в качестве значений были переданы не целые числа, надо сообщать об этом пользователю.
 Примеры запросов: /get/sophisticated/rng?min=100&max=5000,/get/sophisticated/rng?min=100,/get/sophisticated/rng?min=sto&max=5000
- 
    Реализуйте обработчик для пути /worker/ID. По запросу должен возвращаться JSON-документ, содержащий информацию о сотруднике. Приложение должно корректно обрабатывать ситуации:- В качестве ID было передано не целое число. В результате должен быть возвращён следующий документ
 { "status": "error", "message": "Идентификатор сотрудника — целое число." }- По указанному ID не было найдено информации о сотруднике. В результате такого запроса должен быть возвращён следующий документ:
 { "status": "error", "message": "Сотрудник ID не найден в базе." }- По указанному ID был найден сотрудник. Ответ сервера:
 { "status": "success", "data": { "name": "Иван", } }В качестве источника данных используйте YAML-документ из прошлого занятия. --- people: - name: Иван patronymic: Иванович surname: Семёнов email: ivan.semenov@example.com avatar: https://www.gravatar.com/avatar/c941144838e03143e77a9fd40cb36dfa?d=retro&s=400 - name: Сергей patronymic: Александрович surname: Краснов email: sergey.krasnov@example.com avatar: https://www.gravatar.com/avatar/d15aaf8ed63262edbc364c9395d54da4?d=retro&s=400 - name: Наталья patronymic: Владимировна surname: Лихачёва email: natalia.lihacheva@example.com avatar: https://www.gravatar.com/avatar/4a236e4c48d7a8acb16e7221fdad03e3?d=retro&s=400 - name: Пётр patronymic: Алексеевич surname: Соловьёв email: petr.soloviev@example.com avatar: https://www.gravatar.com/avatar/267d7ae01920c7ed15b40fdac2c5eed8?d=retro&s=400
Рекомендации по реализации
- Добавьте в Gemfile библиотеки rodaиrerun.
- 
    Сформируйте пустое приложение на Roda: require 'roda' class Application < Roda route do |r| r.root do 'It is working!' end end end
- 
    Подключите приложение в файле config.ru:require_relative 'application' run Application.freeze.app
- Запустите приложение с помощью rerun:bundle exec rerun rackup
- Используйте обработчик r.on, чтобы сформировать обработчики для дерева запросов. Используйте обработчикr.getдля обработки GET-запросов по данному пути