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`. Вы можете расширить этот пример, добавив больше маршрутов, обработку ошибок и другие функции.