Web-программирование на GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
Go (или Golang) является мощным и эффективным языком программирования, который широко используется для создания веб-приложений. В данном контексте рассмотрим основные аспекты веб-программирования на GO, такие как создание HTTP-сервера, работа с шаблонами и обработка запросов, а также взаимодействие с RESTful API.
Создание HTTP-сервера с использованием пакета net/http
Для создания HTTP-сервера в GO используется пакет net/http. Приведем простой пример создания сервера:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Привет, мир!")
})
http.ListenAndServe(":8080", nil)
}
В данном коде мы создаем простой HTTP-сервер, отвечающий на любой запрос фразой "Привет, мир!". Это базовый каркас для создания веб-приложений на GO.
Работа с шаблонами и обработка запросов
Для динамического создания HTML-страниц и обработки HTTP-запросов GO предоставляет пакеты html/template и net/http. Пример работы с шаблонами:
package main
import (
"html/template"
"net/http"
)
type PageVariables struct {
Title string
Message string
}
func handler(w http.ResponseWriter, r *http.Request) {
pageVariables := PageVariables{
Title: "Пример шаблона",
Message: "Привет, мир!",
}
tmpl, err := template.New("index").Parse(`
<!DOCTYPE html>
<html>
<head>
<title>{{.Title}}</title>
</head>
<body>
<h1>{{.Message}}</h1>
</body>
</html>
`)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
tmpl.Execute(w, pageVariables)
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
В этом примере мы используем шаблон HTML для создания динамической страницы, а структура PageVariables передает данные в шаблон.
Работа с RESTful API в GO
GO предоставляет простые и эффективные инструменты для создания RESTful API. Пример создания простого API:
package main
import (
"encoding/json"
"net/http"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Title string `json:"title"`
}
func handler(w http.ResponseWriter, r *http.Request) {
person := Person{
Name: "Иван",
Age: 30,
Title: "Программист",
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(person)
}
func main() {
http.HandleFunc("/api/person", handler)
http.ListenAndServe(":8080", nil)
}
В этом примере мы создаем простой RESTful API, возвращающий информацию о человеке в формате JSON при обращении к /api/person.