Для начала создания API на Go, вам понадобится определиться с выбором фреймворка. В Go есть несколько популярных фреймворков, таких как Gin, Echo, и Revel. Каждый из них имеет свои преимущества и недостатки, поэтому рекомендуется изучить их особенности и выбрать тот, который наиболее подходит для ваших потребностей.
После выбора фреймворка, вам нужно будет настроить маршрутизацию запросов. В большинстве фреймворков это делается с использованием функций-обработчиков, которые вызываются при определенных HTTP-запросах.
Начните с простого маршрута, например:
```go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.GET("/hello", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "Привет, мир!"})
})
router.Run(":8080")
}
```
В этом примере мы создаем новый объект маршрутизатора Gin и определяем обработчик для GET-запроса на пути "/hello". Обратите внимание, что мы используем JSON для возврата данных клиенту.
Когда у вас есть основной маршрут, вы можете начать добавлять бизнес-логику и доступ к базе данных. Для работы с базами данных вам могут потребоваться дополнительные пакеты, такие как "database/sql" для работы с SQL-базами данных и "github.com/go-redis/redis" для работы с Redis.
Обычно вы будете создавать модели данных описывающие структуры таблиц в базе данных и использовать SQL-запросы или ORM-библиотеки для выполнения операций базы данных.
Вот простой пример работы с базой данных SQL (используя пакет "database/sql"):
```go
package main
import (
"database/sql"
"log"
"net/http"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
func main() {
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
router := gin.Default()
router.GET("/users", func(c *gin.Context) {
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
defer rows.Close()
users := []User{}
for rows.Next() {
user := User{}
err := rows.Scan(&user.ID, &user.Name)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
users = append(users, user)
}
c.JSON(http.StatusOK, users)
})
router.Run(":8080")
}
```
В этом примере мы создаем модель `User`, подключаемся к базе данных MySQL и возвращаем список пользователей из таблицы "users".
Это только базовый пример, чтобы показать, как начать создание API на Go. Вам понадобится изучить больше документации и примеров, чтобы разработать более сложное и надежное API. В документации выбранного вами фреймворка обычно есть примеры кода и описания, которые помогут вам в этом процессе.