Описание курса #
Знания и умения студентов #
В результате прохождения курса студент должен сформировать следующий набор знаний и умений.
- Знать детали работы протокола HTTP
- Клиент-серверная модель взаимодействия
- Взаимодействие без сохранения состояния
- Поддержка сессий с помощью технологий cookies
- Коды ответа
- Заголовки
- Структура URI для описания пути к ресурсам
- Возможности, предоставляемые новыми версиями протокола HTTP 2 и 3
- Знать возможности современных Веб-клиентов, браузеров
- Язык HTML 5 версии
- Язык CSS
- Язык JavaScript
- Технологии WebAssembly
- Знать средства разработчика, предоставляемые браузером
- Средства анализа взаимодействия между браузером и сервером
- Средства анализа структуры HTML-документов
- Знать сферы деятельности ИТ-специалистов, вовлечённых в процесс создания веб-приложений
- Знать способы организации взаимодействия с веб-приложением
- Знать REST
- Знать JSON API
- Знать OpenAPI (swagger)
- Знать GraphQL
- Знать Web Services
- Знать о вариантах архитектуры веб-приложений
- Серверные веб-приложения
- Клиентские веб-приложения
- Знать о 12 факторах для разворачивания продуктового приложения и как эти факторы учтены в рамках курса
- Уметь писать HTTP-клиентов
- Уметь писать клиентов к REST-приложениям
- Уметь писать клиентов к веб-приложениям (http-формы?)
- Уметь реализовывать веб-приложение
- Выдача HTML и JSON-документов при обращении за данными
- Уметь взаимодействовать с базой данных, основное хранилище состояния — база данных
- Постраничная выдача данных при обращении к спискам
- Изменение данных при выполнении соответствующих запросов от пользователей
- Проверка параметров, которые передаёт пользователь
- Реализация авторизации внутренними силами
- Реализация авторизации с помощью внешнего приложения
- Реализация фоновой обработки сложных запросов
- Реализация системы ролей, при которой разные пользователи получают доступ к различным частям пользовательского интерфейса
- Разумное формирование HTML-документов при обращении с использованием механизма шаблонизации
- Использовать CSS-фреймворки для форматирования HTML-документов
- Реализовывать корректное журналирование запросов, поступающих от клиента
- Уметь реализовывать REST-интерфейсы для работы с данными
- Уметь описывать REST-интерфейсы с помощью OpenAPI
- Уметь писать автоматические тесты
- Тесты модульные
- Тесты системные
- Уметь разворачивать приложение на сервере
- Уметь сохранять состояние приложения в базе данных
- Уметь использовать роботов для автоматической проверки исходного кода
Инструменты, которые студент должен освоить в рамках курса #
- Язык Kotlin в уровне достаточном для использования в других частях курса. Предполагается, что студенты знакомы с языком программирования Java.
- Система сборки и запуска задач Gradle Build Tool.
- Библиотека для написания HTTP-серверов и HTTP-клиентов http4k.
- Библиотека для хранения объектов в базе данных KodeinDB.
- Фреймворк для написания модульных тестов kotest.
- Движок для формирования шаблонов Pebble Templates.
- CSS-фреймворк Foundation.
Проверка знаний студентов #
Проверка знаний студентов осуществляется путём реализации и последующей защиты лабораторных работ.
В рамках курса студентам надо будет реализовать систему, в которую по мере изучения материалов курса будут добавляться новые функции.
Лабораторная работа № 1 #
Изначально необходимо разработать веб-приложение, которое будет успешно выполнять обработку данных для одного набора объектов из предметной области. Необходимо обеспечить стандартный набор операций: просмотр списка элементов, просмотр одного элемента, отображение статистической информации.
Для повышенной оценки студенту необходимо обеспечить работу с несколькими связными списками данных одновременно.
Лабораторная работа № 2 #
Обеспечить корректную проверку параметров, которые передаёт пользователь в приложение. При работе с формами пользователь должен получать назад форму, на которой есть введённые пользователем данные и сообщения об ошибках. Приложение должно соответствовать требованиям статических анализаторов кода.
Для повышенной оценки студенту необходимо обеспечить Что?
Для повышенной оценки студенту необходимо написать тесты для проверки работы приложения. Что делать, если они ещё не проходили тестирование?
Лабораторная работа № 3 #
Необходимо будет отделить операции по изменению данных за стеной авторизации в системе: только авторизованные пользователи смогут добавлять данные. Возможно следует добавить признак «авторства» или «владения» объектом. Т.е. только владельцы этой информации могут её редактировать и удалять.
Для повышенной оценки студенту необходимо реализовать возможность управления ролями пользователей, ввести роль «администратор», который сможет редактировать любую информацию и назначать других администраторов.
Лабораторная работа № 4 #
Обеспечить доступ к данным на уровне REST-интерфейса и разработать примеры использования API с использованием curl или другого клиента, позволяющие выполнять просмотр, добавление и обновление данных. REST-интерфейс должен предоставлять такие же ограничения по доступу, что и основное приложение.
Для повышенной оценки студенту необходимо разработать OpenAPI (swagger), описывающий целевое взаимодействие. Необходимо разработать интерактивное приложение-клиент (консольное приложение), которое будет использовать данный REST-интерфейс для решения поставленных задач.