Створення бекенд-застосунку API на Sinatra з використанням Active Record/Ruby Частина 1

Частина 1: Огляд основ та початковий код для застосунку API на Sinatra

pic

Фреймворк Ruby Sinatra

Щоб продемонструвати цю тему, я створю невелику бекенд-систему інвентаризації, яка зберігає та організовує продукти. Перед тим, як заглибитися в основну тему, краще переглянути визначення технологій, які я використаю для створення цього API.

Що таке Sinatra?

Sinatra — це предметно-орієнтована мова (Domain Specific Language), реалізована на Ruby, яка використовується для створення простих та динамічних веб-застосунків. По суті, Sinatra — це набір попередньо створених методів, які ми можемо включити в застосунок, щоб перетворити його на веб-застосунок Ruby. Sinatra — чудовий спосіб розпочати розробку веб-застосунків на Ruby і підготуватися до вивчення інших більших фреймворків, зокрема Rails.

Що таке Active Record ORM?

Active Record (AR) — це ORM (об’єктно-реляційне відображення), яке відповідає за представлення бізнес-даних і логіки. Іншими словами, AR спрощує створення та використання бізнес-об’єктів, дані яких потребують постійного зберігання в базі даних.

Active Record надає кілька механізмів, найважливішими з яких є:

  • Представлення моделей та їхніх даних.
  • Відображення зв’язків між цими моделями.
  • Представлення ієрархій наслідування через пов’язані моделі.
  • Валідація моделей перед їх збереженням у базі даних.
  • Виконання операцій з базою даних у стилі об’єктно-орієнтованого програмування.

Проектування моделей

Тепер настав час почати створення API на Sinatra з використанням Active Record. У цьому прикладі я створю систему інвентаризації, яка має три моделі: Product, Category та Supplier.

Product-Category: Зв’язок між Product і Category — це зв’язок "багато-до-багатьох". Продукт має багато категорій, а категорія має багато продуктів. Таблиця зв’язків Collection відповідає за доступність між цими двома моделями.

Product-Supplier: Зв’язок між Product і Supplier також "багато-до-багатьох". Продукт має багато постачальників, а постачальник має багато продуктів. Таблиця зв’язків Purchase відповідає за доступність між цими двома моделями.

ERD-діаграма моделей

pic

ERD-діаграма

Структура застосунку на Sinatra

Я припускаю, що ви вже знаєте та встановили всі залежності Ruby та Sinatra. Після цього ваша структура застосунку може виглядати так:

pic

Початкові файли застосунку на Sinatra

  • app/models: Моделі Active Record. Відповідають за код, який отримує та оновлює дані в базі даних за допомогою класів, які наслідують ActiveRecord::Base.
  • app/controllers: Відповідають за обробку запитів та використання моделі для створення даних, потрібних для відображення.
  • config: Код у цій папці відповідає за налаштування середовища, як-от підключення файлів/гемів і встановлення з’єднання з базою даних.
  • db/migrate: Міграції Active Record. Відповідають за створення та зміну структури бази даних (створення нових таблиць, додавання стовпців до існуючих тощо).
  • db/seed.rb: Дозволяє легко додати тестові дані до бази даних.
  • spec: Тести RSpec.
  • Gemfile: Містить список усіх гемів, від яких залежить наш застосунок.
  • Rakefile: Код для поширених завдань, які можна легко виконувати з командного рядка, як-от rake console.

Готовий початковий код:

Я створив репозиторій на GitHub для бекенду застосунку API на Sinatra. Ви можете форкнути і клонувати або завантажити його для ознайомлення.

Після клонування або завантаження виконайте команди:

bundle install

Команда вище встановить усі необхідні залежності для вашого застосунку.
Ви тепер можете почати створювати свій проєкт.

Будь ласка, перейдіть до Частини 2 Створення міграцій та таблиць, щоб створити бекенд-застосунок API на Sinatra.

Перекладено з: Building Sinatra API Back-end with Active Record/Ruby Part 1

Leave a Reply

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