HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Определение понятия</a><ul><li><a>Как появились</a></li>
1 <ul><li><a>Определение понятия</a><ul><li><a>Как появились</a></li>
2 </ul></li>
2 </ul></li>
3 <li><a>Об ограничениях и принципах</a><ul><li><a>Приведение к структуре клиент-серверного характера</a></li>
3 <li><a>Об ограничениях и принципах</a><ul><li><a>Приведение к структуре клиент-серверного характера</a></li>
4 <li><a>Состояние "отсутствующее"</a></li>
4 <li><a>Состояние "отсутствующее"</a></li>
5 <li><a>Кэширование</a></li>
5 <li><a>Кэширование</a></li>
6 <li><a>Единый интерфейс</a></li>
6 <li><a>Единый интерфейс</a></li>
7 <li><a>О слоях</a></li>
7 <li><a>О слоях</a></li>
8 <li><a>Кодификация по запросу</a></li>
8 <li><a>Кодификация по запросу</a></li>
9 </ul></li>
9 </ul></li>
10 <li><a>Почему REST</a></li>
10 <li><a>Почему REST</a></li>
11 <li><a>Схема client-server: как работает</a><ul><li><a>Query - что и как</a></li>
11 <li><a>Схема client-server: как работает</a><ul><li><a>Query - что и как</a></li>
12 <li><a>Ресурсы и URI</a></li>
12 <li><a>Ресурсы и URI</a></li>
13 <li><a>Http method</a></li>
13 <li><a>Http method</a></li>
14 <li><a>Как быть с заголовками</a></li>
14 <li><a>Как быть с заголовками</a></li>
15 <li><a>Тела</a></li>
15 <li><a>Тела</a></li>
16 </ul></li>
16 </ul></li>
17 <li><a>Дача ответа</a></li>
17 <li><a>Дача ответа</a></li>
18 <li><a>Первый проект</a><ul><li><a>О кодах</a></li>
18 <li><a>Первый проект</a><ul><li><a>О кодах</a></li>
19 <li><a>REST-функционал</a></li>
19 <li><a>REST-функционал</a></li>
20 <li><a>Запуск и тестинг</a></li>
20 <li><a>Запуск и тестинг</a></li>
21 </ul></li>
21 </ul></li>
22 </ul><p>Для того, чтобы организовать работу клиент-серверной модели, требуется научиться создавать входящие и исходящие запросы. Для этого используются разнообразные языки. Пример - SQL и MySQL.</p>
22 </ul><p>Для того, чтобы организовать работу клиент-серверной модели, требуется научиться создавать входящие и исходящие запросы. Для этого используются разнообразные языки. Пример - SQL и MySQL.</p>
23 <p><a>В Java</a>есть такое понятие как rest. Его изучению будет посвящена статья. А еще пользователи научатся посылать post-запросы для клиент-серверной модели. Информация покажется полезной тем, кто знает, что собой представляет URL и HTTP, а также умеет работать с JSON.</p>
23 <p><a>В Java</a>есть такое понятие как rest. Его изучению будет посвящена статья. А еще пользователи научатся посылать post-запросы для клиент-серверной модели. Информация покажется полезной тем, кто знает, что собой представляет URL и HTTP, а также умеет работать с JSON.</p>
24 <h2>Определение понятия</h2>
24 <h2>Определение понятия</h2>
25 <p>REST - передача состояния представления. Выступает в качестве своеобразного архитектурного стиля взаимодействия компонентом распределенной системы в компьютерной сетке. REST отвечает за обмен данными между элементами, каждый из которых способен находиться в тех или иных местах.</p>
25 <p>REST - передача состояния представления. Выступает в качестве своеобразного архитектурного стиля взаимодействия компонентом распределенной системы в компьютерной сетке. REST отвечает за обмен данными между элементами, каждый из которых способен находиться в тех или иных местах.</p>
26 <p>Рассматриваемый стиль архитектуры - это согласованный набор ограничений для http. Он учитывается во время проектирования распределенной системы. Соответствующие ограничения носят название принципов. Их 6 штук.</p>
26 <p>Рассматриваемый стиль архитектуры - это согласованный набор ограничений для http. Он учитывается во время проектирования распределенной системы. Соответствующие ограничения носят название принципов. Их 6 штук.</p>
27 <p>Важно: утилиты, которые построены с учетом rest - это RESTful.</p>
27 <p>Важно: утилиты, которые построены с учетом rest - это RESTful.</p>
28 <h3>Как появились</h3>
28 <h3>Как появились</h3>
29 <p>REST - определение, которое было введено неким Рой Филдингом. Этот мужчина выступил в качестве одного из создателя протокола HTTP. Возникло понятие в 2000 году, поэтому можно говорить о том, что рассматриваемая особенность относительно молодая.</p>
29 <p>REST - определение, которое было введено неким Рой Филдингом. Этот мужчина выступил в качестве одного из создателя протокола HTTP. Возникло понятие в 2000 году, поэтому можно говорить о том, что рассматриваемая особенность относительно молодая.</p>
30 <p>Концепция работы REST - основа Всемирной Паутины и HTTP протоколов. Раскрыто определение в диссертации Филдинга "Архитектурные стили и дизайн сетевых программных архитектур".</p>
30 <p>Концепция работы REST - основа Всемирной Паутины и HTTP протоколов. Раскрыто определение в диссертации Филдинга "Архитектурные стили и дизайн сетевых программных архитектур".</p>
31 <h2>Об ограничениях и принципах</h2>
31 <h2>Об ограничениях и принципах</h2>
32 <p>При работе с HTTP и Restful-утилитами важно помнить об ограничениях:</p>
32 <p>При работе с HTTP и Restful-утилитами важно помнить об ограничениях:</p>
33 <ol><li>Определение поведения составляющих распределенных систем осуществляется через запрос-ответ.</li>
33 <ol><li>Определение поведения составляющих распределенных систем осуществляется через запрос-ответ.</li>
34 <li>Компонент, которые отправляет запрос - клиент, который его принимает и направляет ответ - сервер.</li>
34 <li>Компонент, которые отправляет запрос - клиент, который его принимает и направляет ответ - сервер.</li>
35 <li>Запросы и ответы в основном направляются через HTTP.</li>
35 <li>Запросы и ответы в основном направляются через HTTP.</li>
36 <li>Сервер - приложение, работающее в Сети. Клиентом может вступать приложение или браузер.</li>
36 <li>Сервер - приложение, работающее в Сети. Клиентом может вступать приложение или браузер.</li>
37 </ol><p>Стоит обратить внимание на то, что не каждая система обмена запросов-ответов - это RESTful. Чтобы она была таковой, требуется выполнение некоторых ограничений.</p>
37 </ol><p>Стоит обратить внимание на то, что не каждая система обмена запросов-ответов - это RESTful. Чтобы она была таковой, требуется выполнение некоторых ограничений.</p>
38 <h3>Приведение к структуре клиент-серверного характера</h3>
38 <h3>Приведение к структуре клиент-серверного характера</h3>
39 <p>Первый принцип, который лежит в основе рассматриваемой особенности. Потребности должны быть разграничены. Для этого требуется узнать потребности клиентского интерфейса, затем отделить их от серверной части.</p>
39 <p>Первый принцип, который лежит в основе рассматриваемой особенности. Потребности должны быть разграничены. Для этого требуется узнать потребности клиентского интерфейса, затем отделить их от серверной части.</p>
40 <p>Подобное ограничение позволяет повысить переносимость клиентского кода на иные платформы. Упрощение server part идет на пользу масштабируемости. За счет существования clients и серверов подобные системы могут развиваться и работать в пределах http обособлено.</p>
40 <p>Подобное ограничение позволяет повысить переносимость клиентского кода на иные платформы. Упрощение server part идет на пользу масштабируемости. За счет существования clients и серверов подобные системы могут развиваться и работать в пределах http обособлено.</p>
41 <h3>Состояние "отсутствующее"</h3>
41 <h3>Состояние "отсутствующее"</h3>
42 <p>Архитектура предусматривает соблюдение такого принципа:</p>
42 <p>Архитектура предусматривает соблюдение такого принципа:</p>
43 <p>В период между запросами server не должен хранить данные о состоянии клиента.</p>
43 <p>В период между запросами server не должен хранить данные о состоянии клиента.</p>
44 <ol><li>Обратное правило тоже действует.</li>
44 <ol><li>Обратное правило тоже действует.</li>
45 <li>Запросы клиента составляются таким образом, чтобы сервер смог извлечь из них информацию для того или иного запроса.</li>
45 <li>Запросы клиента составляются таким образом, чтобы сервер смог извлечь из них информацию для того или иного запроса.</li>
46 </ol><p>Все это помогает передавать сведения по http протоколам и дают возможность client понимать сообщение, независимо от предыдущих.</p>
46 </ol><p>Все это помогает передавать сведения по http протоколам и дают возможность client понимать сообщение, независимо от предыдущих.</p>
47 <h3>Кэширование</h3>
47 <h3>Кэширование</h3>
48 <p>Еще одно ограничение - это возможность "посылающей стороны" выполнять так называемое кэширование ответов. У тех должно иметь обозначение (явное или неявное) для кэшируемых и некэшируемых сведений.</p>
48 <p>Еще одно ограничение - это возможность "посылающей стороны" выполнять так называемое кэширование ответов. У тех должно иметь обозначение (явное или неявное) для кэшируемых и некэшируемых сведений.</p>
49 <p>Если грамотно применять подобную особенность, можно полностью или значительно устранить некоторые клиент-серверные операции, повышая производительность модели. А еще соответствующий вариант расширяет возможности оной.</p>
49 <p>Если грамотно применять подобную особенность, можно полностью или значительно устранить некоторые клиент-серверные операции, повышая производительность модели. А еще соответствующий вариант расширяет возможности оной.</p>
50 <h3>Единый интерфейс</h3>
50 <h3>Единый интерфейс</h3>
51 <p>Основополагающая рассматриваемой архитектуры и post запросов - это унифицированный и единообразный интерфейс:</p>
51 <p>Основополагающая рассматриваемой архитектуры и post запросов - это унифицированный и единообразный интерфейс:</p>
52 <ol><li>Клиенту необходимо при любых обстоятельствах понимать, в каком виде и какие именно и куда конкретно направлять запросы.</li>
52 <ol><li>Клиенту необходимо при любых обстоятельствах понимать, в каком виде и какие именно и куда конкретно направлять запросы.</li>
53 <li>Server обязуется разбирать то, в каком формате давать ответ.</li>
53 <li>Server обязуется разбирать то, в каком формате давать ответ.</li>
54 <li>Единый формат клиент-серверного взаимодействия описывает: что, куда, как и в каком виде отправлять.</li>
54 <li>Единый формат клиент-серверного взаимодействия описывает: что, куда, как и в каком виде отправлять.</li>
55 </ol><p>Без единого интерфейса передача по http и иным протоколам создаст путаницу. Работать рассматриваемая модель, может быть и будет, но с огромными ошибками.</p>
55 </ol><p>Без единого интерфейса передача по http и иным протоколам создаст путаницу. Работать рассматриваемая модель, может быть и будет, но с огромными ошибками.</p>
56 <h3>О слоях</h3>
56 <h3>О слоях</h3>
57 <p>Слой - это иерархия структур сетей. Клиенты способны обращаться к серверам напрямую через http. Иногда - посредством промежуточных узлов. Последний прием помогает повышать масштабируемость за счет сохранения баланса нагрузки с распределенным кэшированием.</p>
57 <p>Слой - это иерархия структур сетей. Клиенты способны обращаться к серверам напрямую через http. Иногда - посредством промежуточных узлов. Последний прием помогает повышать масштабируемость за счет сохранения баланса нагрузки с распределенным кэшированием.</p>
58 <h3>Кодификация по запросу</h3>
58 <h3>Кодификация по запросу</h3>
59 <p>А вот еще одно ограничение, которому должен соответствовать созданный сервис для Сети. Предусматривает то, что клиент способен расширять собственную функциональность. Делается это за счет загрузки кодификаций с серверов. Они представлены апплетами и сценариями.</p>
59 <p>А вот еще одно ограничение, которому должен соответствовать созданный сервис для Сети. Предусматривает то, что клиент способен расширять собственную функциональность. Делается это за счет загрузки кодификаций с серверов. Они представлены апплетами и сценариями.</p>
60 <p>Сервис, который использует рассматриваемую архитектуру, предусматривает следующие преимущества:</p>
60 <p>Сервис, который использует рассматриваемую архитектуру, предусматривает следующие преимущества:</p>
61 <ul><li>высокий уровень производительности (достигается за счет кэша);</li>
61 <ul><li>высокий уровень производительности (достигается за счет кэша);</li>
62 <li>масштабируемость;</li>
62 <li>масштабируемость;</li>
63 <li>наличие прозрачной системы взаимодействий;</li>
63 <li>наличие прозрачной системы взаимодействий;</li>
64 <li>простой и понятный интерфейс;</li>
64 <li>простой и понятный интерфейс;</li>
65 <li>портативность элементов;</li>
65 <li>портативность элементов;</li>
66 <li>возможность совершенствоваться и использоваться в будущем в новых условиях/требованиях.</li>
66 <li>возможность совершенствоваться и использоваться в будущем в новых условиях/требованиях.</li>
67 </ul><p>А еще RESTful сервис легко корректируется. Для реализации поставленной задачи подойдут POST команды.</p>
67 </ul><p>А еще RESTful сервис легко корректируется. Для реализации поставленной задачи подойдут POST команды.</p>
68 <h2>Схема client-server: как работает</h2>
68 <h2>Схема client-server: как работает</h2>
69 <p>Перед тем как сделать первое веб-приложение на Java, стоит разобраться в принципах работы клиент-серверной модели. Рассматриваемая архитектура позволяет отправлять на servers разнообразные команды, чтобы получать или корректировать информацию. Далее будет выдан тот или иной ответ.</p>
69 <p>Перед тем как сделать первое веб-приложение на Java, стоит разобраться в принципах работы клиент-серверной модели. Рассматриваемая архитектура позволяет отправлять на servers разнообразные команды, чтобы получать или корректировать информацию. Далее будет выдан тот или иной ответ.</p>
70 <h3>Query - что и как</h3>
70 <h3>Query - что и как</h3>
71 <p>Клиентские queries передаются по разного рода протоколам. Почти всегда - через http. Они включают в себя:</p>
71 <p>Клиентские queries передаются по разного рода протоколам. Почти всегда - через http. Они включают в себя:</p>
72 <ul><li>http метод;</li>
72 <ul><li>http метод;</li>
73 <li>заголовок;</li>
73 <li>заголовок;</li>
74 <li>URI;</li>
74 <li>URI;</li>
75 <li>тело.</li>
75 <li>тело.</li>
76 </ul><p>Далее каждый элемент будет рассмотрен более подробно.</p>
76 </ul><p>Далее каждый элемент будет рассмотрен более подробно.</p>
77 <h3>Ресурсы и URI</h3>
77 <h3>Ресурсы и URI</h3>
78 <p>В основе клиент-серверной модели лежит принцип манипуляции над ресурсами. Таковыми называют информацию, полученную или изменяемую clients.</p>
78 <p>В основе клиент-серверной модели лежит принцип манипуляции над ресурсами. Таковыми называют информацию, полученную или изменяемую clients.</p>
79 <p>Ресурс - то, чему можно присвоить какое-нибудь имя. Можно провести аналогию с классами Java. В Джаве можно создавать класс из разнообразных составляющих. В РЕСТе ситуация обстоит аналогичным образом. В качестве ресурса могут выступать:</p>
79 <p>Ресурс - то, чему можно присвоить какое-нибудь имя. Можно провести аналогию с классами Java. В Джаве можно создавать класс из разнообразных составляющих. В РЕСТе ситуация обстоит аналогичным образом. В качестве ресурса могут выступать:</p>
80 <ul><li>пользователи;</li>
80 <ul><li>пользователи;</li>
81 <li>отчеты;</li>
81 <li>отчеты;</li>
82 <li>заказы;</li>
82 <li>заказы;</li>
83 <li>документация.</li>
83 <li>документация.</li>
84 </ul><p>Соответствующие составляющие могут выступать некоторой сущностью или конкретным элементов - PDF-файлом, анимацией, видеороликом.</p>
84 </ul><p>Соответствующие составляющие могут выступать некоторой сущностью или конкретным элементов - PDF-файлом, анимацией, видеороликом.</p>
85 <p>Client отправляет queries на эндпоинты - конечные точки (end points). Он представлен адресом в интернете. Выглядит как последовательность символов через которую идентифицируется абстрактный или физический ресурс.</p>
85 <p>Client отправляет queries на эндпоинты - конечные точки (end points). Он представлен адресом в интернете. Выглядит как последовательность символов через которую идентифицируется абстрактный или физический ресурс.</p>
86 <p>Конечная точка URI - путь до ресурса. У каждого соответствующего элемента должен быть уникальный адрес. За этот момент отвечает серверный разработчик.</p>
86 <p>Конечная точка URI - путь до ресурса. У каждого соответствующего элемента должен быть уникальный адрес. За этот момент отвечает серверный разработчик.</p>
87 <h3>Http method</h3>
87 <h3>Http method</h3>
88 <p>Метод Http - последовательность символов (исключая управляющие и разделители), которая указывает на ключевую операцию над ресурсом. Существуют различные методы. Чаще всего встречаются:</p>
88 <p>Метод Http - последовательность символов (исключая управляющие и разделители), которая указывает на ключевую операцию над ресурсом. Существуют различные методы. Чаще всего встречаются:</p>
89 <ul><li>GET - получение данных о конкретном ресурсе через его ID или о коллекции оных;</li>
89 <ul><li>GET - получение данных о конкретном ресурсе через его ID или о коллекции оных;</li>
90 <li>PUT - корректировка через ID;</li>
90 <li>PUT - корректировка через ID;</li>
91 <li>Delete - удаление ресурса посредством ID;</li>
91 <li>Delete - удаление ресурса посредством ID;</li>
92 <li>Post - создание нового элемента.</li>
92 <li>Post - создание нового элемента.</li>
93 </ul><p>Это не все варианты, но у RESTful они встречаются чаще остальных.</p>
93 </ul><p>Это не все варианты, но у RESTful они встречаются чаще остальных.</p>
94 <h3>Как быть с заголовками</h3>
94 <h3>Как быть с заголовками</h3>
95 <p>Http заголовок помогает отправлять дополнительные данные об ответах или "первоначальных командах". Представлены парами ключ-значение.</p>
95 <p>Http заголовок помогает отправлять дополнительные данные об ответах или "первоначальных командах". Представлены парами ключ-значение.</p>
96 <p>Помогают слать заголовки accept на server. Требуется для того, чтобы позволить принимающей стороне разобраться, какой именно формат нужен клиенту для ответа. Разнообразные вариации форматов содержатся в неком MIME-списке типов.</p>
96 <p>Помогают слать заголовки accept на server. Требуется для того, чтобы позволить принимающей стороне разобраться, какой именно формат нужен клиенту для ответа. Разнообразные вариации форматов содержатся в неком MIME-списке типов.</p>
97 <p>MIME - спецификация кодирования электронных материалов и форматирования сообщений так, чтобы их можно было отправлять по Сети. Каждый тип включает в себя две части, разделяемые слэшем. Сначала идет тип, затем - подтип.</p>
97 <p>MIME - спецификация кодирования электронных материалов и форматирования сообщений так, чтобы их можно было отправлять по Сети. Каждый тип включает в себя две части, разделяемые слэшем. Сначала идет тип, затем - подтип.</p>
98 <p>Вот примеры MIME для файлов:</p>
98 <p>Вот примеры MIME для файлов:</p>
99 <ul><li>текстовый: text/plain, text/css;</li>
99 <ul><li>текстовый: text/plain, text/css;</li>
100 <li>картинки: image/gif;</li>
100 <li>картинки: image/gif;</li>
101 <li>аудио: audio/wav;</li>
101 <li>аудио: audio/wav;</li>
102 <li>видео: video/mp4;</li>
102 <li>видео: video/mp4;</li>
103 <li>приложение: application/json, application/xml.</li>
103 <li>приложение: application/json, application/xml.</li>
104 </ul><p>У запроса может быть заголовок типа accept: application/json. Он поможет получить ответ в JSON-формате.</p>
104 </ul><p>У запроса может быть заголовок типа accept: application/json. Он поможет получить ответ в JSON-формате.</p>
105 <h3>Тела</h3>
105 <h3>Тела</h3>
106 <p>Тело - сообщение, которое пересылается на сервер. Может отсутствовать. Этот момент зависит от http. Так, у get и delete нет рассматриваемого элемента. Put и post способны содержать оный. Связано это с тем, что получения информации или удаления по ID (он передается URL) нет необходимости в отправлен на server дополнительных сведений.</p>
106 <p>Тело - сообщение, которое пересылается на сервер. Может отсутствовать. Этот момент зависит от http. Так, у get и delete нет рассматриваемого элемента. Put и post способны содержать оный. Связано это с тем, что получения информации или удаления по ID (он передается URL) нет необходимости в отправлен на server дополнительных сведений.</p>
107 <p>Для того, чтобы создавать новый ресурс через post, требуется оный передать. То же самое касается модификаций. В RESTful-утилитах для передачи тела запроса чаще всего задействуют XML или JSON.</p>
107 <p>Для того, чтобы создавать новый ресурс через post, требуется оный передать. То же самое касается модификаций. В RESTful-утилитах для передачи тела запроса чаще всего задействуют XML или JSON.</p>
108 <h2>Дача ответа</h2>
108 <h2>Дача ответа</h2>
109 <p>Ответ включает в себя:</p>
109 <p>Ответ включает в себя:</p>
110 <ul><li>код;</li>
110 <ul><li>код;</li>
111 - <li>заголовки;</li>
111 + <li>загоовки;</li>
112 <li>тело.</li>
112 <li>тело.</li>
113 </ul><p>Заголовки мало отличаются от аналогичных элементов query. Некоторые из них совпадают. С телом тоже не должно быть проблем: она чаще всего предусматривает возврат информации, которую запрашивал client.</p>
113 </ul><p>Заголовки мало отличаются от аналогичных элементов query. Некоторые из них совпадают. С телом тоже не должно быть проблем: она чаще всего предусматривает возврат информации, которую запрашивал client.</p>
114 <p>В случае с кодами предстоит выделить несколько их групп:</p>
114 <p>В случае с кодами предстоит выделить несколько их групп:</p>
115 <ul><li>1xx - информационные;</li>
115 <ul><li>1xx - информационные;</li>
116 <li>2xx - информирование об успешном принятии и обработке клиентской команды;</li>
116 <li>2xx - информирование об успешном принятии и обработке клиентской команды;</li>
117 <li>3xx - для успешной обработки требуется сформировать иной query, обычно - по-другому URL;</li>
117 <li>3xx - для успешной обработки требуется сформировать иной query, обычно - по-другому URL;</li>
118 <li>4xx - ошибка client;</li>
118 <li>4xx - ошибка client;</li>
119 <li>5xx - ошибка server.</li>
119 <li>5xx - ошибка server.</li>
120 </ul><p>Это наиболее распространенные варианты развития событий. Об ошибках ответов можно узнать больше информации по<a>данной</a>ссылке.</p>
120 </ul><p>Это наиболее распространенные варианты развития событий. Об ошибках ответов можно узнать больше информации по<a>данной</a>ссылке.</p>
121 <h2>Первый проект</h2>
121 <h2>Первый проект</h2>
122 <p>Для того, чтобы понять, как работает обмен информации из постов или сообщений в клиент-серверной модели через РЕСТы, стоит создать первую утилиту такого плата. Подобные services отличаются удобством и функциональностью.</p>
122 <p>Для того, чтобы понять, как работает обмен информации из постов или сообщений в клиент-серверной модели через РЕСТы, стоит создать первую утилиту такого плата. Подобные services отличаются удобством и функциональностью.</p>
123 <p>Процедура будет проходить через service Spring Boot. Для реализации выбран CRUD-список операций. Действовать предстоит так:</p>
123 <p>Процедура будет проходить через service Spring Boot. Для реализации выбран CRUD-список операций. Действовать предстоит так:</p>
124 <ol><li>Открыть Spring Boot.</li>
124 <ol><li>Открыть Spring Boot.</li>
125 <li>Перейти в "Файл"-Новый"-"Проект".</li>
125 <li>Перейти в "Файл"-Новый"-"Проект".</li>
126 <li>Кликнуть по Spring Instializr. Далее выбрать Project SDK.</li>
126 <li>Кликнуть по Spring Instializr. Далее выбрать Project SDK.</li>
127 <li>Нажать на "Далее", после чего указать тип проекта - Maven, а также указать Group и Artifact.</li>
127 <li>Нажать на "Далее", после чего указать тип проекта - Maven, а также указать Group и Artifact.</li>
128 <li>Продолжить работу с настройками. Здесь предстоит выбрать компоненты фреймворка. Для примера достаточно ресурсов Spring Web.</li>
128 <li>Продолжить работу с настройками. Здесь предстоит выбрать компоненты фреймворка. Для примера достаточно ресурсов Spring Web.</li>
129 <li>Указать имя проекта и его местоположение.</li>
129 <li>Указать имя проекта и его местоположение.</li>
130 <li>Щелкнуть по "Завершить".</li>
130 <li>Щелкнуть по "Завершить".</li>
131 </ol><p>На экране появится структура приложения. IDEA будет генерировать дескриптор развертывания системы сборки Maven. Это pom.xml, а также класс приложения RestExampleApplication.</p>
131 </ol><p>На экране появится структура приложения. IDEA будет генерировать дескриптор развертывания системы сборки Maven. Это pom.xml, а также класс приложения RestExampleApplication.</p>
132 <h3>О кодах</h3>
132 <h3>О кодах</h3>
133 <p>Теперь необходимо просмотреть код:</p>
133 <p>Теперь необходимо просмотреть код:</p>
134 pom.xml: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven. apache .org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;parent&gt; &lt;groupId org .springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/ groupid artifactId &gt; &lt;version&gt;2.2.2.RELEASE&lt;/version&gt; &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt; &lt;/parent&gt; &lt;groupId&gt;com.javarush.lectures&lt;/groupId&gt; &lt;artifactId&gt;rest_example&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;name&gt;rest_example&lt;/name&gt; &lt;description&gt;REST example project&lt;/description&gt; &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; group Id org .springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;group Id &gt;org.springframework.boot&lt;/groupId artifactId &gt;spring-boot-starter-test&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.junit.vintage&lt;/group Id &gt; &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/ dependency group id &gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/project&gt; А у RestExampleAppication: @SpringBootApplication public class RestExampleApplication { public static void main(String[] args) { SpringApplication.run(RestExampleApplication.class, args); } }<h3>REST-функционал</h3>
134 pom.xml: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven. apache .org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;parent&gt; &lt;groupId org .springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/ groupid artifactId &gt; &lt;version&gt;2.2.2.RELEASE&lt;/version&gt; &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt; &lt;/parent&gt; &lt;groupId&gt;com.javarush.lectures&lt;/groupId&gt; &lt;artifactId&gt;rest_example&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;name&gt;rest_example&lt;/name&gt; &lt;description&gt;REST example project&lt;/description&gt; &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; group Id org .springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;group Id &gt;org.springframework.boot&lt;/groupId artifactId &gt;spring-boot-starter-test&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.junit.vintage&lt;/group Id &gt; &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/ dependency group id &gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/project&gt; А у RestExampleAppication: @SpringBootApplication public class RestExampleApplication { public static void main(String[] args) { SpringApplication.run(RestExampleApplication.class, args); } }<h3>REST-функционал</h3>
135 <p>Теперь можно создать РЕСТ-функционал, разобравшись, что собой представляют надписи groupID org, dependency groupID, а также private string и artifactid version.</p>
135 <p>Теперь можно создать РЕСТ-функционал, разобравшись, что собой представляют надписи groupID org, dependency groupID, а также private string и artifactid version.</p>
136 <p>Для этого потребуется:</p>
136 <p>Для этого потребуется:</p>
137 <ul><li>Создать new пакет model внутри com,javarush.lectures.rest_example. Внутри "Модель" будет создан класс под названием Client.</li>
137 <ul><li>Создать new пакет model внутри com,javarush.lectures.rest_example. Внутри "Модель" будет создан класс под названием Client.</li>
138 </ul><ul><li>Утилита будет работать с CRUD-операциями через ID. Поэтому далее создается сервис, реализовывающий соответствующие команды.</li>
138 </ul><ul><li>Утилита будет работать с CRUD-операциями через ID. Поэтому далее создается сервис, реализовывающий соответствующие команды.</li>
139 </ul><ul><li>Теперь требуется поработать над реализацией интерфейса. Ключ - это ID Clients, значением - отправляющая request сторона. Это требуется для того, чтобы не перегружать наглядный пример спецификой функционирования БД.</li>
139 </ul><ul><li>Теперь требуется поработать над реализацией интерфейса. Ключ - это ID Clients, значением - отправляющая request сторона. Это требуется для того, чтобы не перегружать наглядный пример спецификой функционирования БД.</li>
140 <li>В пакете service создается реализация интерфейса clientInterface.</li>
140 <li>В пакете service создается реализация интерфейса clientInterface.</li>
141 </ul><ul><li>Аннотация @Service будет говорить спрингу, что соответствующий класс - это и есть сервис. Относится к специальному типу классов, в которой реализуется бизнес-логика утилиты. Помогает получать экземпляр класса там, где это потребуется.</li>
141 </ul><ul><li>Аннотация @Service будет говорить спрингу, что соответствующий класс - это и есть сервис. Относится к специальному типу классов, в которой реализуется бизнес-логика утилиты. Помогает получать экземпляр класса там, где это потребуется.</li>
142 <li>Нужно создать контроллер. Это спецкласс, который будет отвечать за логику обработки queries по ID на эндпоинты.</li>
142 <li>Нужно создать контроллер. Это спецкласс, который будет отвечать за логику обработки queries по ID на эндпоинты.</li>
143 <li>Сначала внедряется зависимость от clientservice.</li>
143 <li>Сначала внедряется зависимость от clientservice.</li>
144 </ul><ul><li>Теперь пошагово каждый метод контроллера будет воплощаться в жизнь. Начать стоит с create. Для него прописывается отдельный метод.</li>
144 </ul><ul><li>Теперь пошагово каждый метод контроллера будет воплощаться в жизнь. Начать стоит с create. Для него прописывается отдельный метод.</li>
145 </ul><ul><li>Теперь стоит рассмотреть Read id.</li>
145 </ul><ul><li>Теперь стоит рассмотреть Read id.</li>
146 </ul><ul><li>Так выглядит реализация возможности получения клиента по его ID.</li>
146 </ul><ul><li>Так выглядит реализация возможности получения клиента по его ID.</li>
147 </ul><ul><li>А вот update и delete.</li>
147 </ul><ul><li>А вот update и delete.</li>
148 </ul><p>Так выглядит проект с apache. Остается запустить и протестировать оный.</p>
148 </ul><p>Так выглядит проект с apache. Остается запустить и протестировать оный.</p>
149 <h3>Запуск и тестинг</h3>
149 <h3>Запуск и тестинг</h3>
150 <p>Для запуска потребуется активировать метод<a>main</a>в классе RequestExampleApplication. Чтобы успешно справиться с поставленной задачей, требуется загрузить программу под названием PostMan. После инициализации потребуется:</p>
150 <p>Для запуска потребуется активировать метод<a>main</a>в классе RequestExampleApplication. Чтобы успешно справиться с поставленной задачей, требуется загрузить программу под названием PostMan. После инициализации потребуется:</p>
151 <ol><li>Открыть утилиту и создать query.</li>
151 <ol><li>Открыть утилиту и создать query.</li>
152 <li>Щелкнуть по кнопке new в левом верхнем углу.</li>
152 <li>Щелкнуть по кнопке new в левом верхнем углу.</li>
153 <li>Выбрать Request.</li>
153 <li>Выбрать Request.</li>
154 <li>Дать name оному и сохранить.</li>
154 <li>Дать name оному и сохранить.</li>
155 <li>Отправить request и создать первый клиент.</li>
155 <li>Отправить request и создать первый клиент.</li>
156 <li>Сформировать несколько подобных элементов.</li>
156 <li>Сформировать несколько подобных элементов.</li>
157 <li>Применить GET.</li>
157 <li>Применить GET.</li>
158 </ol><p>Теперь остается проверить, что выдаст система. На самом деле работать с post и иными командами не составляет никакого труда. А чтобы лучше разобраться в выбранном направлении, можно записаться на дистанционные специализированные образовательные курсы. В конце обучения выдается сертификат, подтверждающий знания. Пользователи смогут быстро разобраться с IT-технологиями и программированием. ID и иные понятия больше не доставят никаких хлопот.</p>
158 </ol><p>Теперь остается проверить, что выдаст система. На самом деле работать с post и иными командами не составляет никакого труда. А чтобы лучше разобраться в выбранном направлении, можно записаться на дистанционные специализированные образовательные курсы. В конце обучения выдается сертификат, подтверждающий знания. Пользователи смогут быстро разобраться с IT-технологиями и программированием. ID и иные понятия больше не доставят никаких хлопот.</p>
159 <a></a>
159 <a></a>