Пишем REST API сервис на Go - УЛЬТИМАТИВНЫЙ гайд

Пишем полноценный REST API сервис URL Shortener - это будет не игрушечный проект, а полностью готовый к использованию: - выберем для него актуальный http-роутер: go-chi/chi - Позаботимся о логах: slog - Напишем тесты - unit-тесты, тесты хэндлеров и функциональные - Настроим автоматический деплой через GitHub Actions, напишем для этого workflow - и др. Облачный сервер, который я использовал: Репозиторий проекта: Другие мои ролики, дополняющие текущий: Интерфейсы по месту использования: Моки и их генерация: Использование SQLite в Go: ✍Текстовый вариант гайда: Буду очень благодарен за вашу поддержку и там ❤ ---- 👾 - мой канал в Telegram-канал. Пишу в нём много интересного: гайды, которых нет на YouTube, интересные мысли про разработку, новости и анонсы всех моих активностей и др. 👀 GoLang Digest: - мои регулярные подборки интересных материалов по Go. 🗣️ Наше сообщество GopherClub: zsSZ63wEJDs3NGVi Лучшее русскоязычное Go-сообщество с очень приятной атмосферой, без токсиков. Вежливо и терпеливо помогаем новичкам, конструктивно дискутируем с профессионалами и т.п. Здесь также присутствуют все звезды Go-сообщества и представители интересных компаний 😄 ❤️ Если у вас есть желание поддержать развитие канала: Секретный телеграм-канал: - В рублях: 1UPXV_DGnG1mODJi - В евро: hedI8LevYTc5MDM6 Boosty: Patreon: ---- Тайм-коды: 00:00 Вступление 01:28 Почему мой Telegram-канал очень важен 03:05 Про папку cmd 03:46 План работ и описание используемых библиотек 07:46 Конфигурация приложения и работа с конфигами - CleanEnv 21:34 Настройка логгера - slog 30:25 Пишем Storage - БД / хранилище данных сервиса - SQLite 43:56 SaveURL() - пишем метод Storage для сохранения URLов 50:01 GetURL() - метод Storage для получения URLов 51:40 DeleteURL() - упражнение для самостоятельной работы 52:29 Создаём роутер - Chi 53:27 Middleware для роутера - что это? 54:30 Подключаем Middleware: RequestID и RealIP 56:19 Middleware для логирования запросов 01:02:43 Middleware: Recover и URLFormat - удобный парсинг URL-параметров 01:04:20 Pretty Logger - крутые красивые логи для локальной разработки 01:08:35 Handler: Save - обработчик запросов на сохранение URL 01:35:09 Создание и запуск HTTP сервера 01:38:08 Пишем тест для хэндлера Save 01:52:13 Функциональные тесты - что это такое, и чем они лучше? 01:53:37 Handler: Redirect - редиректим пользователя на сохранённый URL 02:00:23 Handler: Delete - упражнение для самостоятельной работы 02:01:37 Авторизация - ограничение прав доступа к некоторым хэндлерам 02:07:03 Авторизация: как её протестировать с помощью Postman 02:08:06 Пишем тест для хэндлера Redirect 02:13:18 Функциональные тесты - тестируем приложение как черную коробку 02:28:23 Настраиваем деплой проекта на удалённый сервер 02:28:46 Покупаем сервер у Selectel 02:36:00 GitHub Actions: настройка автоматического деплоя проекта 02:37:38 GitHub Actions: Пишем Worflow для деплоя 02:47:27 systemd: настройка автоматического запуска сервиса 02:48:58 Запускаем и проверяем деплой через наш Workflow 02:50:32 GitHub Secrets: хранение приватной информации для деплоя 02:52:44 Успешный деплой через наш Workflow 02:53:18 Тестируем наш сервис на удалённом сервере 02:55:21 Заключение #golang #ntuzov
Back to Top