HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Веб-приложения постоянно обрабатывают запросы от веб-клиентов и формируют ответы. Эти действия одинаково реализуются во всех веб-приложениях. Чтобы не копировать в проектах один и тот же код, такие действия выносятся в библиотеки, которые называются<strong>микрофреймворками</strong>.</p>
1 <p>Веб-приложения постоянно обрабатывают запросы от веб-клиентов и формируют ответы. Эти действия одинаково реализуются во всех веб-приложениях. Чтобы не копировать в проектах один и тот же код, такие действия выносятся в библиотеки, которые называются<strong>микрофреймворками</strong>.</p>
2 <p>В этом уроке разберем микрофреймворк Fiber. Мы расскажем, чем он помогает разработчикам и как на нем реализовать веб-приложение.</p>
2 <p>В этом уроке разберем микрофреймворк Fiber. Мы расскажем, чем он помогает разработчикам и как на нем реализовать веб-приложение.</p>
3 <h2>Что такое микрофреймворк Fiber</h2>
3 <h2>Что такое микрофреймворк Fiber</h2>
4 <p>Схема работы веб-приложения выглядит следующим образом:</p>
4 <p>Схема работы веб-приложения выглядит следующим образом:</p>
5 <ol><li>Разбор входящих запросов</li>
5 <ol><li>Разбор входящих запросов</li>
6 <li>Поиск обработчика по пути запроса</li>
6 <li>Поиск обработчика по пути запроса</li>
7 <li>Выполнение логики обработчика</li>
7 <li>Выполнение логики обработчика</li>
8 <li>Формирование и отправка ответа</li>
8 <li>Формирование и отправка ответа</li>
9 </ol><p>Первый, второй и четвертый шаги реализуются схоже во всех веб-приложениях. И чтобы не повторяться в каждом проекте, их выносят в микрофреймворки. Так веб-разработчики могут сосредоточиться на бизнес-логике приложений - на коде внутри обработчиков запросов.</p>
9 </ol><p>Первый, второй и четвертый шаги реализуются схоже во всех веб-приложениях. И чтобы не повторяться в каждом проекте, их выносят в микрофреймворки. Так веб-разработчики могут сосредоточиться на бизнес-логике приложений - на коде внутри обработчиков запросов.</p>
10 <p>В языке Go есть много микрофреймворков. Они отличаются мелкими деталями. Например, разной структурой объектов запроса. Один из самых популярных микрофреймворков на Go -<strong>Fiber</strong>. Он позволяет быстро писать высокопроизводительные веб-приложения с помощью того, что запросы и ответы эффективно обрабатываются.</p>
10 <p>В языке Go есть много микрофреймворков. Они отличаются мелкими деталями. Например, разной структурой объектов запроса. Один из самых популярных микрофреймворков на Go -<strong>Fiber</strong>. Он позволяет быстро писать высокопроизводительные веб-приложения с помощью того, что запросы и ответы эффективно обрабатываются.</p>
11 <p>Микрофреймворк ценится программистами, так как упрощает разработку. Поэтому важно разобраться, как на нем реализуется веб-приложение.</p>
11 <p>Микрофреймворк ценится программистами, так как упрощает разработку. Поэтому важно разобраться, как на нем реализуется веб-приложение.</p>
12 <h2>Как реализовать веб-приложение на Fiber</h2>
12 <h2>Как реализовать веб-приложение на Fiber</h2>
13 <p>Посмотрим, как Fiber упрощает реализацию веб-приложения. Представим, что у нас есть страница с адресом компании:</p>
13 <p>Посмотрим, как Fiber упрощает реализацию веб-приложения. Представим, что у нас есть страница с адресом компании:</p>
14 <p>Запускаем веб-приложение, открываем браузер и переходим на страницу<em><a>http://localhost/address</a></em>- получаем в ответ строку "145 DUNDEE SOUTH SAN FRANCISCO CA 94080-1023. USA".</p>
14 <p>Запускаем веб-приложение, открываем браузер и переходим на страницу<em><a>http://localhost/address</a></em>- получаем в ответ строку "145 DUNDEE SOUTH SAN FRANCISCO CA 94080-1023. USA".</p>
15 <p>Разберем, как данный пример ложится на общую схему работы веб-приложений:</p>
15 <p>Разберем, как данный пример ложится на общую схему работы веб-приложений:</p>
16 <ol><li>Разбор входящих запросов</li>
16 <ol><li>Разбор входящих запросов</li>
17 <li>Поиск обработчика по пути запроса</li>
17 <li>Поиск обработчика по пути запроса</li>
18 </ol><p>Эти пункты выполняются в следующей строке:</p>
18 </ol><p>Эти пункты выполняются в следующей строке:</p>
19 <p>Здесь обработчик должен вызваться при получении GET запроса по пути "/address". При этом логика, где разбирается запрос и сопоставляются пути с обработчиком, находится в микрофреймворке Fiber, а мы используем готовые функции.</p>
19 <p>Здесь обработчик должен вызваться при получении GET запроса по пути "/address". При этом логика, где разбирается запрос и сопоставляются пути с обработчиком, находится в микрофреймворке Fiber, а мы используем готовые функции.</p>
20 <p>Следующие два шага:</p>
20 <p>Следующие два шага:</p>
21 <ol><li>Выполнение логики обработчика</li>
21 <ol><li>Выполнение логики обработчика</li>
22 <li>Формирование и отправка ответа</li>
22 <li>Формирование и отправка ответа</li>
23 </ol><p>В примере выше эти пункты тоже описываются одной строкой:</p>
23 </ol><p>В примере выше эти пункты тоже описываются одной строкой:</p>
24 <p>Большую часть времени веб-разработчики пишут код внутри обработчиков. При этом используют готовые библиотеки для удобства и эффективности. В нашем примере не нужно писать низкоуровневый код по передаче байт в сетевом соединении для ответа. Мы вызываем функцию из Fiber c.SendString(), которая сделает всё за нас.</p>
24 <p>Большую часть времени веб-разработчики пишут код внутри обработчиков. При этом используют готовые библиотеки для удобства и эффективности. В нашем примере не нужно писать низкоуровневый код по передаче байт в сетевом соединении для ответа. Мы вызываем функцию из Fiber c.SendString(), которая сделает всё за нас.</p>
25 <p>Теперь мы знаем, как реализовать веб-приложение на Fiber. Он заметно упрощает разработку, так как готовые библиотеки с функциями частично выполняют работу программиста.</p>
25 <p>Теперь мы знаем, как реализовать веб-приложение на Fiber. Он заметно упрощает разработку, так как готовые библиотеки с функциями частично выполняют работу программиста.</p>
26 <p>Упрощенно логика обработчика выглядит так: прочитай запрос и отдай ответ. Поэтому важно знать, как работать с запросами и ответами в используемом микрофреймворке. Рассмотрим, как это делается в Fiber.</p>
26 <p>Упрощенно логика обработчика выглядит так: прочитай запрос и отдай ответ. Поэтому важно знать, как работать с запросами и ответами в используемом микрофреймворке. Рассмотрим, как это делается в Fiber.</p>
27 <h2>Как работать с запросами и ответами в Fiber</h2>
27 <h2>Как работать с запросами и ответами в Fiber</h2>
28 <p>В стандартном пакете net/http запрос и ответ разделены в разные структуры. В Fiber все нужное содержится в одной структуре *fiber.Ctx. Если использовать ее, можно читать параметры и тело запроса, а также отправлять любые ответы.</p>
28 <p>В стандартном пакете net/http запрос и ответ разделены в разные структуры. В Fiber все нужное содержится в одной структуре *fiber.Ctx. Если использовать ее, можно читать параметры и тело запроса, а также отправлять любые ответы.</p>
29 <p>Разберем работу с запросом и ответом в Fiber на примере. Представим, что нам нужно реализовать веб-приложение, у которого есть страница с профилями пользователей. Когда программа получает профиль, передается его идентификатор с помощью GET параметра profile_id.</p>
29 <p>Разберем работу с запросом и ответом в Fiber на примере. Представим, что нам нужно реализовать веб-приложение, у которого есть страница с профилями пользователей. Когда программа получает профиль, передается его идентификатор с помощью GET параметра profile_id.</p>
30 <p>Если profile_id не указан, то приложение должно возвращать ответ со статусом 422 (Unprocessable Entity) и текстом ошибки в теле. Если передается корректный profile_id, то возвращается строка с идентификатором профиля:</p>
30 <p>Если profile_id не указан, то приложение должно возвращать ответ со статусом 422 (Unprocessable Entity) и текстом ошибки в теле. Если передается корректный profile_id, то возвращается строка с идентификатором профиля:</p>
31 <p>Запускаем веб-приложение, открываем браузер и переходим на страницу<em><a>http://localhost/profiles</a></em>- получаем в ответ строку ошибки "profile_id is required".</p>
31 <p>Запускаем веб-приложение, открываем браузер и переходим на страницу<em><a>http://localhost/profiles</a></em>- получаем в ответ строку ошибки "profile_id is required".</p>
32 <p>Попробуем передать корректный идентификатор профиля. Переходим по ссылке<em><a>http://localhost/profiles?profile_id=300</a></em>- получаем в ответ строку "User Profile ID: 300".</p>
32 <p>Попробуем передать корректный идентификатор профиля. Переходим по ссылке<em><a>http://localhost/profiles?profile_id=300</a></em>- получаем в ответ строку "User Profile ID: 300".</p>
33 <p>Разберем подробнее код обработчика из данного примера.</p>
33 <p>Разберем подробнее код обработчика из данного примера.</p>
34 <p>По описанию веб-приложения от нас требовалось считывать GET параметр с идентификатором профиля. Это происходит в этой строке:</p>
34 <p>По описанию веб-приложения от нас требовалось считывать GET параметр с идентификатором профиля. Это происходит в этой строке:</p>
35 <p>Запросы, которые приходят на сервер, не всегда корректны. Поэтому profile_id может быть не указан или передан пустым значением. Мы обрабатываем такое ошибочное поведение и возвращаем ошибку:</p>
35 <p>Запросы, которые приходят на сервер, не всегда корректны. Поэтому profile_id может быть не указан или передан пустым значением. Мы обрабатываем такое ошибочное поведение и возвращаем ошибку:</p>
36 <p>Если получаем корректное значение profile_id, то возвращаем его в ответе:</p>
36 <p>Если получаем корректное значение profile_id, то возвращаем его в ответе:</p>
37 <p>В итоге у нас получилось считать GET-параметры запроса и отправить ответы с помощью микрофреймворка Fiber.</p>
37 <p>В итоге у нас получилось считать GET-параметры запроса и отправить ответы с помощью микрофреймворка Fiber.</p>
38 <h2>Выводы</h2>
38 <h2>Выводы</h2>
39 <ul><li>Веб-приложения работают одинаково, поэтому разработчики используют микрофреймворки. С их помощью не нужно писать один и тот же код, чтобы обработать запросы</li>
39 <ul><li>Веб-приложения работают одинаково, поэтому разработчики используют микрофреймворки. С их помощью не нужно писать один и тот же код, чтобы обработать запросы</li>
40 <li>Fiber - один из популярных микрофреймворков на Go с интуитивными функциями и высокой производительностью</li>
40 <li>Fiber - один из популярных микрофреймворков на Go с интуитивными функциями и высокой производительностью</li>
41 <li>Обработчика на GET HTTP-запросы настраивают через вызов функции Get("/path", func(c *fiber.Ctx) error {})</li>
41 <li>Обработчика на GET HTTP-запросы настраивают через вызов функции Get("/path", func(c *fiber.Ctx) error {})</li>
42 <li>Вся информация о HTTP-запросе находится в структуре c *fiber.Ctx</li>
42 <li>Вся информация о HTTP-запросе находится в структуре c *fiber.Ctx</li>
43 <li>Чтобы написать ответ, необходимо вызвать функцию c.SendString() у объекта контекста Fiber. При этом можно предварительно указать код статуса ответа функцией c.Status()</li>
43 <li>Чтобы написать ответ, необходимо вызвать функцию c.SendString() у объекта контекста Fiber. При этом можно предварительно указать код статуса ответа функцией c.Status()</li>
44 </ul>
44 </ul>