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