Создания простого HTTP сервера на Go

Maksim Mysak
go to golang
Published in
2 min readMay 29, 2017

Go обеспечивает полную поддержку HTTP в пакете net/http. С помощью этого пакета очень просто установить веб-сервер.

package main

import (
"fmt" // пакет для форматированного ввода вывода
"net/http" // пакет для поддержки HTTP протокола
"strings" // пакет для работы с UTF-8 строками
"log" // пакет для логирования
)

func HomeRouterHandler(w http.ResponseWriter, r *http.Request) {
r.ParseForm() //анализ аргументов,
fmt.Println(r.Form) // ввод информации о форме на стороне сервера
fmt.Println("path", r.URL.Path)
fmt.Println("scheme", r.URL.Scheme)
fmt.Println(r.Form["url_long"])
for k, v := range r.Form {
fmt.Println("key:", k)
fmt.Println("val:", strings.Join(v, ""))
}
fmt.Fprintf(w, "Hello Maksim!") // отправляем данные на клиентскую сторону
}

func main() {
http.HandleFunc("/", HomeRouterHandler) // установим роутер
err := http.ListenAndServe(":9000", nil) // задаем слушать порт
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

После выполнения вышеуказанного кода сервер начинает слушать порт 9000 на локальном хосте.
Откройте браузер и посетите http: // localhost: 9000. Вы видите, что Hello Maksim! находится на вашем экране.
Попробуем другой адрес с дополнительными аргументами: http: // localhost:9000/?params=val1&params =val2
Теперь давайте посмотрим, что происходит на стороне клиента и сервера.

На стороне сервера должна быть следующая информация:

Информация на сервере

Как вы видете , нам нужно вызвать только две функции, чтобы создать простой веб-сервер.

Если вы работаете с PHP, вы, вероятно, спросите, нужно ли нам что-то вроде Nginx или Apache ?

Ответ нет , поскольку Go сам слушает TCP-порт, а функция HomeRouterHandler является логической функцией, как контроллер в PHP.

Если вы работаете с Python, вы должны знать торнадо, и приведенный выше пример очень похож на этот.
Если вы работаете с Ruby, вы можете заметить, что он похож на скрипт / сервер в ROR (Ruby on Rails).
Мы использовали две простые функции для настройки простого веб-сервера, и этот простой сервер уже обладает возможностями для операций с большим параллелизмом.

--

--