Статьи

Создание HTTP-сервера в Go

В этом посте мы создадим простой HTTP-сервер в Go, выполнив несколько простых шагов. Прежде чем начать, позвольте мне дать вам краткое введение в Go.

Что такое го?

Go — это язык программирования с открытым исходным кодом, который чувствителен к регистру и статически типизирован с синтаксисом, аналогичным синтаксису языка C, созданного в Google в 2007 году. Он компилируется очень быстро, поддерживает параллелизм на уровне языка и обеспечивает сборку мусора, безопасность типов, динамическую возможность ввода, многие расширенные встроенные типы, такие как массивы переменной длины и карты значений ключей, хотя нет поддержки универсального программирования, наследования типов, перегрузки методов или операторов, арифметики указателей и утверждений.

Теперь давайте начнем с настройки среды для запуска нашего первого HTTP-сервера, выполнив следующие шаги:

Шаг 1: Скачайте и распакуйте Go в любой каталог, для меня это golang в каталоге / Users / ArpitAggarwal / следующим образом:

1
2
3
4
$ mkdir golang
$ cd golang
$ wget https://storage.googleapis.com/golang/go1.8.3.darwin-amd64.tar.gz
$ tar -xvzf go1.8.3.darwin-amd64.tar.gz

Шаг 2: Обновите путь с помощью GOROOT , GOPATH и GOBIN следующим образом:

1
2
3
4
$ export GOROOT=/Users/ArpitAggarwal/golang/go
$ export GOPATH=$GOROOT/src
$ export GOBIN=$GOROOT/bin
$ export PATH=$PATH:$GOPATH:$GOBIN

GOROOT относится к каталогу установки go.
GOPATH ссылается на наш каталог рабочей области go или где выполняется go build.
GOBIN относится к каталогу, куда идут генерации исполняемых двоичных файлов.

Шаг 3: Проверьте, правильно ли установлен GOPATH на Bash , выполнив следующую команду:

1
$ env | grep -E "^GO"

Шаг 4: Создайте каталог в рабочей области для хранения исходного кода:

1
$ mkdir -p $GOPATH/github.com/arpitaggarwal

Шаг 5: Перейдите в каталог, который мы создали на предыдущем шаге, и создайте в нем файл с именем webserver.go , как показано ниже:

1
2
$ cd $GOPATH/github.com/arpitaggarwal
$ touch webserver.go

Скопируйте следующий код Go:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
package main
 
import (
    "fmt"
    "log"
    "net/http"
)
 
func helloWorld(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World!") // send data to client side
}
 
func main() {
    http.HandleFunc("/", helloWorld)         // set router
    err := http.ListenAndServe(":8080", nil) // set listen port
    if err != nil {
        log.Fatal("Error while starting GO http server on port - 8080 : ", err) //log error and exit in case of error at server boot up
    }
}

Давайте разберемся, что означает каждая строка.

основной пакет — определяет имя пакета программы.

import («fmt», «log», «net / http») — это команда препроцессора, которая указывает компилятору Go включать все файлы из пакетов fmt , log и net / http .

func helloWorld (w http.ResponseWriter, r * http.Request) — это функция go.

main () — это основная функция, с которой начинается выполнение программы.

Шаг 6: Установите webserver.go с помощью инструмента go следующим образом:

1
$ go install $GOPATH/github.com/arpitaggarwal/webserver.go

Выше команды скомпилируйте webserver.go и сгенерируйте его исполняемый двоичный файл в $ GOROOT / bin или GOBIN

Шаг 7: Запустите веб-сервер, перейдя в каталог golang , следующим образом:

1
2
$ cd golang
$ ./go/bin/webserver

Теперь откройте http: // localhost: 8080 / в браузере или выполните команду:

1
curl http://localhost:8080

покажет нам «Hello World!» как ответ.

Шаг 8: При желании мы можем запустить двоичный файл в фоновом режиме, используя команду nohup , следующим образом:

1
2
$ cd golang
$ nohup ./go/bin/webserver &;

Полный исходный код размещен на github

Ссылка: Создание HTTP-сервера в Go от нашего партнера JCG