Вступ до Sinatra: фреймворк на Ruby

Sinatra — це веб-фреймворк, який використовується для створення веб-застосунків за допомогою мови програмування Ruby. Це легкий фреймворк, який надає простий, але потужний інтерфейс для створення веб-застосунків.

Sinatra часто називають “мікро”-фреймворком, оскільки він забезпечує лише базові функції, необхідні для створення веб-застосунку. Завдяки мінімалістичному дизайну Sinatra розробники отримують повний контроль над архітектурою та дизайном свого застосунку, не відволікаючись на зайві функції. У цьому посібнику ми розглянемо основи Ruby Sinatra та навчимося створювати простий веб-застосунок із динамічними маршрутами.

Установка

Відкрийте ваш редактор коду та створіть новий репозиторій. Встановіть гем Sinatra, відкривши термінал і ввівши команду:

gem install sinatra

Створіть файл server.rb і додайте на початку такий код:

require 'sinatra'

Визначте початковий маршрут для домашньої сторінки:

get '/' do  
 "Hello, world!"  
end

Це все, щоб почати. Sinatra дозволяє розпочати роботу з мінімумом коду. У терміналі виконайте: ruby server.rb.

Ви маєте побачити в терміналі щось на зразок цього:

== Sinatra (v2.2.3) has taken the stage on 4567 for development with backup from Thin  
2023-04-24 12:47:39 -0400 Thin web server (v1.8.2 codename Ruby Razor)  
2023-04-24 12:47:39 -0400 Maximum connections set to 1024  
2023-04-24 12:47:39 -0400 Listening on localhost:4567, CTRL+C to stop  
::1 - - [24/Apr/2023:12:47:56 -0400] "GET / HTTP/1.1" 200 13 0.0043  
::1 - - [24/Apr/2023:12:47:56 -0400] "GET /favicon.ico HTTP/1.1" 404 469 0.0008

Я вже маю встановлений гем Thin для запуску сервера. Однак Sinatra рекомендує використовувати гем Puma на початковому етапі. Якщо виникнуть проблеми, виконайте команду gem install puma, а потім перезапустіть сервер командою ruby server.rb. Тепер перейдіть до localhost:4567 у вашому браузері, і ви побачите відповідь “Hello, World!” від сервера.

Маршрутизація

Маршрути визначають, що Sinatra робить, коли користувач переходить за певною URL-адресою. У Sinatra маршрут — це HTTP-метод, наприклад, GET, POST, PUT, PATCH, DELETE, OPTIONS, LINK, UNLINK, у поєднанні з URL-шляхом. Кожен маршрут пов’язаний із блоком коду, який виконується, коли сервер отримує запит на вказаний шлях.

get '/' do  
 "Hello, world!"  
end  

post '/' do  
 .. створити щось ..  
end  

delete '/' do  
 .. видалити щось ..  
end

Розглянемо наш початковий маршрут.

get '/' do   
 "Hello, world!"   
end

Цей код визначає маршрут для кореневого URL (тобто домашньої сторінки). Коли користувач переходить на кореневий URL, код виконає блок коду всередині do … end і поверне рядок “Hello, world!”

Динамічні маршрути

Окрім статичних маршрутів, ви також можете створювати динамічні маршрути, які приймають параметри з URL. Ось приклад:

get '/greeting/:name' do  
 "Hello, #{params[:name]}!"  
end

У цьому прикладі маршрут приймає параметр із назвою :name. Коли користувач переходить за URL, що відповідає цьому маршруту http://localhost:4567/greeting/ry, код виконає блок коду всередині do … end і поверне рядок “Hello, ry!”. Якщо шлях містить ":", наприклад, :name, Sinatra додає цей параметр до хеша params. У нашому коді доступ до параметра можна отримати за ключем, використовуючи рядок або символ: params['name'] або params[:name].

Під час роботи з викликами до бази даних ми можемо використовувати динамічні маршрути та хеш params у Sinatra. Наприклад, якщо ми хочемо оновити пост у вигаданій соціальній мережі.

Знаючи, які дані будуть у тілі запиту клієнта, ми можемо отримати доступ до цих даних за допомогою хеша params.

patch '/post/:id' do  
 social_media_post = DB.find(params[:id])  
 social_media_post.update(  
 body = params[:body]  
 )  
 social_media_post.to_json  
end

Параметри запиту (Query Parameters)

Ви також можете отримати доступ до параметрів запиту, переданих в URL, використовуючи хеш params. Ось приклад:

get '/search' do  
 "You searched for #{params[:q]}"  
end

У цьому прикладі маршрут приймає параметр запиту :q, який може бути будь-яким рядком. Коли користувач переходить за URL, що відповідає цьому маршруту http://localhost:4567/search?q=ruby, код виконає блок коду всередині do … end і поверне рядок “You searched for ruby”.

Висновок

Сподіваюся, ця коротка стаття допоможе вам у навчанні та використанні Sinatra. Це дуже простий у використанні мінімалістичний фреймворк. Його можливості маршрутизації "з коробки" забезпечують зрозумілий код, який легко писати та читати. Незалежно від того, чи створюєте ви простий веб-застосунок, чи складний API, Sinatra — чудовий вибір для вашого наступного проєкту.

Перекладено з: Intro to Sinatra: the Ruby framework

Leave a Reply

Your email address will not be published. Required fields are marked *