... > GO > Web-программирование на GO

Web-программирование на GO

НАВИГАЦИЯ ПО СТРАНИЦЕ

Создание HTTP-сервера Работа с шаблонами Работа с RESTful API

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.