Понимание основ Ruby on Rails: HTTP, MVC и Routes
После изучения вашего первый язык программирования, вы можете спросить, что вы можете делать с программированием: ИИ/машинное обучение? Разработка оборудования? Мобильные приложения? Или, может быть, вы хотите начать разработку веб-приложений!
Здесь мы поймем основы работы сети, маршрутов и архитектуры MVC с использованием веб-фреймворка Ruby on Rails. Давайте погрузимся в веб-мир.
Прежде чем изучать веб-разработку с помощью Rails, я настоятельно рекомендую изучить Рубин первый.
Как работает сеть?
В паутине есть куча слоев (Приложение, TCP, Интернет, Аппаратные уровни), которые все связаны. Но в принципе работает через HTTP (Протокол передачи гипертекста).
Протокол передачи гипертекста (HTTP) — это прикладной протокол для распределенных, совместных информационных систем гипермедиа. — Википедия
HTTP работает как цикл запрос — ответ в модели клиент — сервер.
У нас есть веб-браузер (например, Google Chrome). Итак, мы набираем www.google.com
URL, и клиент отправляет HTTP-запрос (сообщение запроса) на сервер. Сервер возвращает HTTP-ответ (ответное сообщение — в этом случае ответом является HTML-код с веб-сайта Google).
Клиент выполняет запрос и получает ответ от сервера. Клиент обрабатывает пользовательский интерфейс и взаимодействие с пользователем. На сервере мы можем хранить и извлекать данные (в базах данных), обрабатывать логику в фоновом режиме (работники/задания) и многое другое.
Если вы хотите глубоко понять это, я предложу некоторые ресурсы. я большой поклонник Притипосты. Здесь ряд 3 части:
Архитектура MVC и маршруты Rails
Теперь, когда мы понимаем, как работает Интернет, мы изучим архитектуру MVC и маршруты Rails.
MVC означает модель, представление и контроллер.
В этой архитектуре у нас есть «разделение задач» между моделями, представлениями и контроллерами. Каждая часть несет свою ответственность. Давайте углубимся в каждую часть.
Модель
«Поддерживает связь между объектом и базой данных и обрабатывает проверку, ассоциацию, транзакции»
Это означает, что модель будет поддерживать экстремальную связь с базой данных. Каждая модель (может) представлять таблицу базы данных (в случае баз данных SQL). Этот объект модели получает возможности (унаследованные от класса ActiveRecord — Rails) для извлечения, сохранения, редактирования и удаления данных из таблицы базы данных. Мы используем объекты модели в качестве слоя между нашим приложением и базой данных.
Помимо этой связи с базой данных, модель может создавать проверкиа также ассоциации между моделями.
Вид
«Представление данных в определенном формате, вызванное решением контролера представить данные».
Это представление ответа на запрос. Эта презентация может быть в нескольких форматах: PDF, HTML, JSON и т. д. Конечным результатом просмотра, скорее всего, будет пользовательский интерфейс (UI) — часть «Клиента».
Для большинства веб-страниц представления представляют собой HTML-стили с использованием CSS и JS. Но мы можем реализовать PDF-файлы поведения пользователя на Цифровой продукт для путешествий показать всем сотрудникам, как люди используют их веб-сайт.
Контроллер
«Средство в приложении, которое направляет трафик, с одной стороны, запрашивая модели для конкретных данных, а с другой стороны, организуя эти данные (поиск, сортировка) в форму, которая соответствует потребностям данного представления».
Контроллер — «Маэстро». Он заботится о потоке: использует модели для выполнения запросов, анализирует данные и принимает решения о том, в каком формате вы будете представлять данные.
Цикл MVC и Routes в приложении Rails
Итак, представьте, что мы работаем в Туристический стартап. Частью продукта является представление список замечательных статей о путешествиях и советы путешественникам.
Просто подумайте с точки зрения путешественника. Вы идете на www.worldpackers.com/articles
и вы видите красивую страницу со списком отличных статей.
Когда вы вводите этот URL-адрес в браузере, он отправляет запрос на сервер. На сервере у нас есть веб-приложение Rails. Маршрутизатор Rails проверяет, есть ли запись, соответствующая запрошенному URL-адресу.
Нам просто нужно настроить маршруты для этой строки:
resources :articles
Это создаст маршруты RESTful для статей. Если мы побежим bundle exec rake routes
он покажет список созданных путей.
HTTP VERB PATH Controller#Action
GET /articles(.:format) articles#index
POST /articles(.:format) articles#create
GET /articles/new(.:format) articles#new
GET /articles/:id/edit(.:format) articles#edit
GET /articles/:id(.:format) articles#show
PATCH /articles/:id(.:format) articles#update
PUT /articles/:id(.:format) articles#update
DELETE /articles/:id(.:format) articles#destroy
Глагол HTTP может быть GET
, POST
, PATCH
, PUT
или же DELETE
. И мы знаем, как Rails сопоставляет каждый PATH
Направо controller
а также action
. Читать далее здесь.
В нашем случае сервер получит /articles
путь и GET
как HTTP-глагол. Он будет отображаться на ArticlesController
а также index
действие.
в контроллерArticlesController
мы используем модель Article
чтобы получить все статьи в базе данных и отобразить Посмотреть index.html.erb
как ответ сервера (пользовательский интерфейс).
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
end
По соглашению этот контроллер будет отображать представление в views/articles/index.html.erb
. По сути, это обычный HTML-файл, работающий на Ruby.
Цикл запроса-ответа Rails — это одна из первых концепций, которые вам нужно понять, когда вы начинаете изучать веб-разработку.
Пользователь делает что-то (запрашивает сервер), приложение Rails имеет маршрутизатор для сопоставления пути URL с правильным контроллером. В контроллере мы можем выполнять все действия с моделью (или несколькими моделями) — получение, сохранение, редактирование, удаление данных — и отображать представление для пользователя.
Это все!
Мы многому здесь научились. Я надеюсь, что вы, ребята, оцените этот материал и узнаете больше о том, как архитектура MVC и маршрутизация работают в Rails.
Это еще один шаг вперед в моем путешествии по изучению и освоению Rails и веб-разработки. Вы можете увидеть документацию о моем полном путешествии здесь, на моем Публикация «Ренессанс Девелопер».
Если вы хотите полный Рубин а также Рельсы конечно, изучите реальные навыки кодирования и создавайте проекты, попробуйте Один месяц Ruby Bootcamp а также Учебный курс по Rails. Увидимся там ☺
Получайте удовольствие и продолжайте учиться и программировать.