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



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

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

Пишем полноценный REST API сервис URL Shortener – это будет не игрушечный проект, а полностью готовый к использованию:
– выберем для него актуальный http-роутер: go-chi/chi
– Позаботимся о логах: slog
– Напишем тесты – unit-тесты, тесты хэндлеров и функциональные
– Настроим автоматический деплой через GitHub Actions, напишем для этого workflow
– и др.

Облачный сервер, который я использовал: https://slc.tl/torpo
Репозиторий проекта: https://github.com/GolangLessons/url-shortener

Другие мои ролики, дополняющие текущий:
Интерфейсы по месту использования: https://youtu.be/eYHCCht8eX4
Моки и их генерацию: https://youtu.be/qaaa3RsC0FQ
Использование SQLite в Go: https://youtu.be/rrDtiKKO_mc

✍Текстовый вариант гайда: https://habr.com/ru/companies/selectel/articles/747738/
Буду очень благодарен за вашу поддержку и там ❤
—-

👾 https://t.me/ntuzov – мой канал в Telegram-канал.
Пишу в нём много интересного: гайды, которых нет на YouTube, интересные мысли про разработку, новости и анонсы всех моих активностей и др.

👀 GoLang Digest: https://t.me/golang_digest – мои регулярные подборки интересных материалов по Go.

🗣️ Наше сообщество GopherClub: https://t.me/+zsSZ63wEJDs3NGVi
Лучшее русскоязычное Go-сообщество с очень приятной атмосферой, без токсиков. Вежливо и терпеливо помогаем новичкам, конструктивно дискутируем с профессионалами и т.п.
Здесь также присутствуют все звезды Go-сообщества и представители интересных компаний 😄

❤️ Если у вас есть желание поддержать развитие канала:

Секретный телеграм-канал:
– В рублях: https://t.me/+1UPXV_DGnG1mODJi
– В евро: https://t.me/+hedI8LevYTc5MDM6

Boosty: https://boosty.to/nikolay.tuzov
Patreon: https://www.patreon.com/tuzov
—-
Тайм-коды:

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

Comments are closed.