HTML Diff
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>