Изучаем Go - создание загрузчика (часть 1)
Последние пару месяцев я много игрался с Go и, честно говоря, наслаждался работой с ним. Не так давно у меня появилось чуть больше свободного времени и я решил, что это хороший момент для того, чтобы побольше погрузиться в Go и улучшить навыки работы с этим интересным языком.Также, это прекрасная возможность начать привыкать писать больше. Ну чтож, давайте начнем и в течение моего цикла постов запрограммируем небольшой сервер.
Идея
Одной из самых больших проблем, с которыми я столкнулся, стала разработка идеи проекта. Я хотел начать этот цикл постов несколько дней назад, но не мог определиться с тем, что делать.
Должно было быть что-то такое, чтобы я мог закодить скелет приложения за несколько часов. Тем не менее, должно было быть достаточно сложно, чтобы я мог побольше разобраться в языке. И после долгих размышлений, я решил создать простой сервер, который загружал бы файлы с удаленного сервера. К тому же, эта идея время от времени приходила мне в голову и такой сервис мог мне понадобиться на практике. Всегда находится что-нибудь, что в данный момент не нужно, но заархивировать и вернуться позже было бы совсем кстати. Мне не нужно каждый раз думать как щелкнуть правой кнопкой мыши и выбрать пункт меню на веб-странице. Я могу добавить URL файла как в Dropbox и больше ни о чем не беспокоится.
Конечно, может показаться, что я переусердствую (и, вероятно, так и есть), но я все таки не могу без проектов ...
Высокоуровневое программирование
Наш загрузчик будет простым веб-приложением. К концу проекта я хочется изучить использование Let's Encrypt для взаимодействия по HTTPS с приложением. Наш сервер скорее похож на архив, поэтому будет жить вне сайта. Тестированием будет заниматься экземпляр (micro-instance) движка Google Compute. Попробую использовать стандартную библиотеку на протяжении всего проекта, ведь, в конце концов, это учебное приложение.
Для начала сам сервер будет иметь две основных шаблона запросов:
http://<server>/
- GET / - статус сервера и, скорей всего, время работы.
http://<server>/download
- PUT POST / download - принимаем объект JSON с деталями загрузки
Объект JSON
{ "title": "Name of download (filename probably)", "location": "URL of download" }
Сервер получит JSON, распарсит его и затем обработает запрос GET для загрузки файла. После получения сохраняем файл на диск. А сейчас давайте рассмотрим, как создается объект JSON. Нам это понадобиться, т.к еще к этому вернемся. У меня появилась базовая идея, поэтому я собираюсь написать код и попытаться задокументировать все, что я делаю, работая над каждым небольшим спринтом.
Другие статьи из цикла:
- Изучаем Go - создание загрузчика (часть 1)
- Изучаем Go - создание загрузчика (часть 2)
- Изучаем Go - создание загрузчика (часть 3)
- Изучаем Go - создание загрузчика (часть 4)
- Изучаем Go - создание загрузчика (часть 5)
- Изучаем Go - Использование REST API
- Изучаем Go - Продолжаем работать с REST API
- Изучаем Go - Отправка REST-запросов
- Изучаем Go - Используем REST API в паре с шаблонами проектирования
- Изучаем Go - Повторная отправка электронной почты через API
Изучаем Go - Давайте станем модульными!скороИзучаем Go - Давайте станем модульными снова!скороИзучаем Go - Сборка DevLog Часть 01скороИзучаем Go - Сборка DevLog Часть 02скоро