У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Изучаем 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. Нам это понадобиться, т.к еще к этому вернемся. У меня появилась базовая идея, поэтому я собираюсь написать код и попытаться задокументировать все, что я делаю, работая над каждым небольшим спринтом.

Другие статьи из цикла:

#Golang
Присоеденяйся в тусовку

Будь всегдя вкурсе новостей из мира IT