Замут на Golang

Первые шаги в Web-сайт при помощи Go

Как вы понимаете эта информация не для изучения языка Go, для этого есть во первых сайт Go, а во вторых написано много книг для изучения языка Go и в третьих много всякой инфы на счёт Go в интырнете, типа в яндексе набираешь в поисковой строке: «учебник Go» и ты уже счастлив с кучей разной инфы для начинающих…

Почитал я всяких книг про Go web-сервисы, которые на русском языке есть, ситуация такая, то там сопли мажут на 100 страниц, пока до сути доберёшся - поспишь несколько раз, даи захлопнешь книжку, то там всякой хрени понапишут, что ни-чего не понять, афтар типа сам для себя пишет, а на читателей его произведения ему как-бы совсем насрать, что поняли, что не поняли. (Хотя по самому языку Go инфы на русском языке много и можно найти хороший учебник. Я в Go языке за неделю разобрался. А программирую я уже примерно 30 лет с 1995 года). Вот я тоже собрался тут с мыслями и решил постараться донести суть Go web-сервисов до простых смертных. Короче встречайте и сильно не пинайте, а то ведь нужно до конца дописать. А в голове есть ещё кое какие планы.

Кароче… GO — отличный язык для написания простых, но эффективных веб-серверов и веб-сервисов. Он предоставляет встроенный HTTP-пакет, который содержит утилиты для быстрого создания веб-сервера или файлового сервера.

Цель этой статьи и последующих других статей — создать веб-сервис (web-сайт). Мы будем использовать сервис для обслуживания статических файлов, выступая в качестве файлового сервера. Ну короче получится целый сайт свой собственный, самый быстрый на 100500+ милионов запросов в секунду… ;)

POST, GET, PUT, DELETE и тд. тоже разберём, работу с базой данных и всякой всячиной…

Без лишних слов давай рассмотрим, как создать свой первый веб-сервис на Go.

Как это всё замутить

Понадобится версия Go 1.11 или выше, короче заходим на сайт Go и скачиваем последнюю версию Go, и устанавливаем её чтобы начать.

В этом разделе мы создадим все необходимые файлы и установим правильную структуру файла. После этого мы импортируем наши пакеты, чтобы проверить, работает ли то, что щас тут будет понаписано.

Для проекта нужно сделать директорию. Обзовём её как-нибудь. Далее в этой новой своей директории сделаем файло, что изображено ниже:

- main.go

Для написания своей програмулины нужно выбрать редактор написания кода. Чёткие пацаны шарящие в Go предлагают скачатьиустановить для wind`ы вот такой редактор кода: LiteIDE скачать, https://github.com/visualfc/liteide, который специально предназначен для написания кода Go. А можно и в любом другом который поддерживает кодировку UTF-8 хоть notepad++, github, releases. А есть ещё безплатный vscode, но туда нужно плугины всякия устанавливать и для Go тоже.

Теперь давай напишем сколько-то кода. Открыть файл main.go и импортировать необходимые пакеты.

«log» нужен для вывода сообщений (логов) на консоль, «net/http» является наиболее важным пакетом. Он предоставляет все функции для создания реализации клиента или сервера HTTP, такой как веб-сервер Go.

package main import ( "log" "net/http" )

Нужно добавить простую функцию main() в файл main.go, которая печатает сообщение в терминал и на web-страницу. Здесь, внутри функции main() видно на первой строке mux := http.NewServeMux(), то есть переменной mux присваивается какая-то хрень существующая в http - это то, что было импортировано из «net/http». Короче servemux - это маршрутизатор HTTP запросов. И как раз следующей строкой - mux.HandleFunc("/", home) - построен маршрут «домашний», типа иди домой. Функция home щас будет описана чуть ниже. Дальше в терминал выводится сообщение, что будет запущен сервер по адресу http://127.0.0.1 (localhost) на порту 8080. Ну и далее запускается сам сервак:

err := http.ListenAndServe(":8080", mux)

с учётом того, что если что, то в лог вываливается ошибка: log.Fatal(err).

func main() { mux := http.NewServeMux() mux.HandleFunc("/", home) log.Println("Это типа web-server: http://127.0.0.1:8080") err := http.ListenAndServe(":8080", mux) log.Fatal(err)}

Функция home, куда отправил маршрутизатор пишет на домашнюю страничку в браузере две строцки:

func home(w http.ResponseWriter, r *http.Request) { w.Write([]byte("

Внимание! Проникновение в Web!

")) w.Write([]byte("

content.V07BiT.2025.Perved!

"))}

Файлик main.go должен выглядеть вот так:

package main import ( "log" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", home) log.Println("Это типа web-server: http://127.0.0.1:8080") err := http.ListenAndServe(":8080", mux) log.Fatal(err) }func home(w http.ResponseWriter, r *http.Request) { w.Write([]byte("

Внимание! Проникновение в Web!

")) w.Write([]byte("

content.V07BiT.2025.Perved!

")) }

Чтобы проверить как это всё работает, нужно запустить сервак выполнив команду в терминале, в windows — это командная строка cmd.exe (терминал, консоль, командная строка — это всё одно и то-же):

go run main.go

В окне консоли должно появиться вот такое:

Это типа web-server: http://127.0.0.1:8080

В окне браузера (это где интернет показывают), в адресной строке нужно набрать вот такой адрес:

http://127.0.0.1:8080

А в браузере (это где интернет показывают) появится вот такое:

Если получилось, то день прожит не зря и поехали дальше… (Ну типа в следующую статью).

PS. Конечно перед тем, как писать код нужно сначала скачать и установить Go. Кто в санях, тот уже это сделал, а кто ещё нет, займёмся в следующей статье.

Начать дискуссию