golang gorilla/mux

Конечно! Вот пример простого API на Go с использованием пакета `gorilla/mux`. Мы создадим простой API с двумя маршрутами: один для получения списка пользователей и другой для добавления нового пользователя. ### Шаг 1: Установка gorilla/mux Если у вас еще не установлен `gorilla/mux`, установите его с помощью `go get`: ```bash go get -u github.com/gorilla/mux ``` ### Шаг 2: Создание проекта Создайте новый проект и структуру папок: ``` my-gorilla-api/ ├── main.go └── user.go ``` ### Шаг 3: Создание модели пользователя Создайте файл `user.go` и определите структуру пользователя: ```go package main type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"` } ``` ### Шаг 4: Создание основного файла Создайте файл `main.go` и напишите код для создания API: ```go package main import ( "encoding/json" "net/http" "strconv" "github.com/gorilla/mux" ) var users = []User{ {ID: 1, Name: "Alice", Email: "alice@example.com"}, {ID: 2, Name: "Bob", Email: "bob@example.com"}, } func main() { r := mux.NewRouter() // Routes r.HandleFunc("/users", getUsers).Methods("GET") r.HandleFunc("/users", createUser).Methods("POST") // Start server http.ListenAndServe(":8080", r) } // Handler func getUsers(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(users) } func createUser(w http.ResponseWriter, r *http.Request) { var user User err := json.NewDecoder(r.Body).Decode(&user) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } user.ID = len(users) + 1 users = append(users, user) w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) json.NewEncoder(w).Encode(user) } ``` ### Шаг 5: Запуск сервера Запустите сервер, выполнив команду: ```bash go run main.go ``` Сервер будет запущен на порту `8080`. ### Шаг 6: Тестирование API Теперь вы можете протестировать API с помощью `curl` или любого другого инструмента для работы с HTTP-запросами. #### Получение списка пользователей: ```bash curl http://localhost:8080/users ``` Вы должны увидеть ответ: ```json [ {"id":1,"name":"Alice","email":"alice@example.com"}, {"id":2,"name":"Bob","email":"bob@example.com"} ] ``` #### Добавление нового пользователя: ```bash curl -X POST http://localhost:8080/users -H "Content-Type: application/json" -d '{"name":"Charlie","email":"charlie@example.com"}' ``` Вы должны увидеть ответ: ```json {"id":3,"name":"Charlie","email":"charlie@example.com"} ``` ### Заключение Этот пример демонстрирует, как создать простой API на Go с использованием пакета `gorilla/mux`. Вы можете расширить этот пример, добавив больше маршрутов, обработку ошибок и другие функции.