воскресенье, 17 марта 2019 г.

Go примеры: Hello, gopher!

Сегодня я представляю вам пример простой веб-программы на Go. Программа принимает параметр name переданный в GET запросе и приветствует пользователя. В программе представлен пример обслуживания http-запроса с помощью пакета net/http. Также в программе использован пакет flag для обработки параметров командной строки, передаваемых программе при запуске - в нашем случае программа обрабатывает флаг port и прослушивает запросы по указанному порту.

package main

import (
 "flag"
 "fmt"
 "log"
 "net/http"
)

var PORT = flag.Int("port", 15001, "listen port")

func Hello(w http.ResponseWriter, r *http.Request) {

 keys, ok := r.URL.Query()["name"]

 if !ok || len(keys[0]) < 1 {
  log.Println("Url параметр 'name' пропущен")
  return
 }

 // Query()["key"] будет возвращать массив элементов,
 // нам нужен только один элемент.
 key := keys[0]

 log.Println("Url параметр 'name': " + string(key))

 message := "Hello, " + string(key) + "!"
 head := "" + message + ""
 response := "" + head + "" + message + ""

 w.Header().Set("Content-Type", "text/html")
 w.Write([]byte(response))
}

func main() {
 flag.Parse()
 addr := fmt.Sprintf(":%d", *PORT)
 log.Println("Программа запущена на порту " + addr)
 http.HandleFunc("/hello", Hello)
 err := http.ListenAndServe(addr, nil)
 if err != nil {
  log.Fatal("ListenAndServe: ", err)
 }
}

Пример сборки и запуска (из папки где находится файл hello.go с исходным кодом программы):

go build
./hello // для Linux

go build
hello.exe // для Windows

Пример запроса:


Читайте также:


Комментариев нет:

Отправить комментарий