0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Несмотря на огромное число разнообразных сайтов, практически всю веб-разработку можно свести к<a>CRUD</a>-операциям. В этом уроке мы познакомимся с ними подробнее.</p>
1
<p>Несмотря на огромное число разнообразных сайтов, практически всю веб-разработку можно свести к<a>CRUD</a>-операциям. В этом уроке мы познакомимся с ними подробнее.</p>
2
<h2>Что такое CRUD</h2>
2
<h2>Что такое CRUD</h2>
3
<p>CRUD - это широко распространенный термин, означающий четыре стандартные операции над любой сущностью. Рассмотрим такой пример:</p>
3
<p>CRUD - это широко распространенный термин, означающий четыре стандартные операции над любой сущностью. Рассмотрим такой пример:</p>
4
<ul><li>Создание (<em>Create</em>) - регистрация пользователя</li>
4
<ul><li>Создание (<em>Create</em>) - регистрация пользователя</li>
5
<li>Чтение (<em>Read</em>) - просмотр профиля пользователями сайта или в административном интерфейсе</li>
5
<li>Чтение (<em>Read</em>) - просмотр профиля пользователями сайта или в административном интерфейсе</li>
6
<li>Обновление (<em>Update</em>) - Обновление личных данных, смена электронной почты или пароля</li>
6
<li>Обновление (<em>Update</em>) - Обновление личных данных, смена электронной почты или пароля</li>
7
<li>Удаление (<em>Delete</em>) - удаление данных</li>
7
<li>Удаление (<em>Delete</em>) - удаление данных</li>
8
</ul><p>Точно так же можно расписать действия над любыми другими ресурсами: фотографиями пользователя, его друзьями, сообщениями и так далее. Чтобы создать полный CRUD, нужно выполнить следующие действия:</p>
8
</ul><p>Точно так же можно расписать действия над любыми другими ресурсами: фотографиями пользователя, его друзьями, сообщениями и так далее. Чтобы создать полный CRUD, нужно выполнить следующие действия:</p>
9
<ul><li>Создать сущность в коде (как правило, это класс)</li>
9
<ul><li>Создать сущность в коде (как правило, это класс)</li>
10
<li>Добавить таблицу в базу</li>
10
<li>Добавить таблицу в базу</li>
11
<li>Написать тесты для проверки обработчиков</li>
11
<li>Написать тесты для проверки обработчиков</li>
12
<li>Добавить обработчики</li>
12
<li>Добавить обработчики</li>
13
<li>Добавить шаблоны</li>
13
<li>Добавить шаблоны</li>
14
</ul><p>Ниже мы пройдемся по всему процессу создания CRUD пользователя за исключением работы с базой данных и тестов.</p>
14
</ul><p>Ниже мы пройдемся по всему процессу создания CRUD пользователя за исключением работы с базой данных и тестов.</p>
15
<p>Начнем с<strong>роутинга</strong>. Полный CRUD пользователя включает минимум семь маршрутов. Их может быть больше, потому что любое действие может повторяться более одного раза:</p>
15
<p>Начнем с<strong>роутинга</strong>. Полный CRUD пользователя включает минимум семь маршрутов. Их может быть больше, потому что любое действие может повторяться более одного раза:</p>
16
<p>Такое соглашение об именовании маршрутов изначально появилось во фреймворке Ruby On Rails, а затем его адаптировали во многих других. Здесь мы его используем из-за его универсальности и понятности.</p>
16
<p>Такое соглашение об именовании маршрутов изначально появилось во фреймворке Ruby On Rails, а затем его адаптировали во многих других. Здесь мы его используем из-за его универсальности и понятности.</p>
17
<h2>Как работают контроллеры</h2>
17
<h2>Как работают контроллеры</h2>
18
<p>CRUD-операции объединяют маршруты и их обработчики в логические блоки вокруг каких-то сущностей - например, CRUD курсов, упражнений, уроков, статей в блоге и так далее. Такая структура позволяет разбить приложение на файлы так, чтобы его было удобно поддерживать. В веб-разработке принято объединять обработчики в<strong>контроллеры</strong>- классы, которые содержат в себе обработчики сущностей.</p>
18
<p>CRUD-операции объединяют маршруты и их обработчики в логические блоки вокруг каких-то сущностей - например, CRUD курсов, упражнений, уроков, статей в блоге и так далее. Такая структура позволяет разбить приложение на файлы так, чтобы его было удобно поддерживать. В веб-разработке принято объединять обработчики в<strong>контроллеры</strong>- классы, которые содержат в себе обработчики сущностей.</p>
19
<p>Работая с Javalin, мы можем добавлять контроллеры как классы, потому что фреймворк по умолчанию умеет работать с ними. Чтобы лучше понять тему, разберем упрощенный пример такого класса управления пользователями:</p>
19
<p>Работая с Javalin, мы можем добавлять контроллеры как классы, потому что фреймворк по умолчанию умеет работать с ними. Чтобы лучше понять тему, разберем упрощенный пример такого класса управления пользователями:</p>
20
<p>Этот контроллер не учитывает валидацию, пагинацию и множество других деталей, которыми всегда обрастает реальное приложение. Сейчас нам важнее сфокусироваться на самой концепции.</p>
20
<p>Этот контроллер не учитывает валидацию, пагинацию и множество других деталей, которыми всегда обрастает реальное приложение. Сейчас нам важнее сфокусироваться на самой концепции.</p>
21
<p>Как мы выяснили выше,<strong>контроллер</strong>- это класс, в котором каждый обработчик описан статическим методом, принимающим на вход контекст. Полный CRUD включает в себя реализацию семи методов, но все зависит от задачи - иногда могут понадобиться не все методы, иногда приходится добавлять какие-то более специфические обработчики.</p>
21
<p>Как мы выяснили выше,<strong>контроллер</strong>- это класс, в котором каждый обработчик описан статическим методом, принимающим на вход контекст. Полный CRUD включает в себя реализацию семи методов, но все зависит от задачи - иногда могут понадобиться не все методы, иногда приходится добавлять какие-то более специфические обработчики.</p>
22
<p>Теперь нужно поправить роутинг. Описание роутинга с добавлением контроллеров становится проще для восприятия:</p>
22
<p>Теперь нужно поправить роутинг. Описание роутинга с добавлением контроллеров становится проще для восприятия:</p>
23
<p>Когда стоит переходить на использование контроллеров? Практически в любой ситуации контроллеры не вносят сложности, но значительно помогают при расширении кода. Они улучшают навигацию по проекту и делают роутинг гораздо более понятным.</p>
23
<p>Когда стоит переходить на использование контроллеров? Практически в любой ситуации контроллеры не вносят сложности, но значительно помогают при расширении кода. Они улучшают навигацию по проекту и делают роутинг гораздо более понятным.</p>