Оцініть цю публікацію!
[Усього: 0 Середнє значення: 0]
Веб-застосунок, який використовує фреймворк Gin для створення API для збереження та отримання користувацьких даних в базі даних SQLite. Для цього потрібно встановити бібліотеку Gin, використовуючи go get
:
go get -u github.com/gin-gonic/gin
Ось код веб-застосунку:
package main import ( "database/sql" "fmt" "log" "net/http" "github.com/gin-gonic/gin" _ "github.com/mattn/go-sqlite3" ) var db *sql.DB type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"` } func main() { // Ініціалізація бази даних SQLite var err error db, err = sql.Open("sqlite3", "./users.db") if err != nil { log.Fatal(err) } defer db.Close() // Створення таблиці користувачів, якщо її ще немає _, err = db.Exec(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT ) `) if err != nil { log.Fatal(err) } // Ініціалізація роутера Gin router := gin.Default() // Додавання роутів router.GET("/users", getUsers) router.POST("/users", addUser) // Запуск сервера на порту 8080 err = router.Run(":8080") if err != nil { log.Fatal(err) } } func getUsers(c *gin.Context) { var users []User // Отримання списку користувачів з бази даних rows, err := db.Query("SELECT id, name, email FROM users") if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Помилка отримання користувачів"}) return } defer rows.Close() // Читання результатів запиту for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Email) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Помилка читання користувачів"}) return } users = append(users, user) } // Відправка списку користувачів у форматі JSON c.JSON(http.StatusOK, users) } func addUser(c *gin.Context) { var user User // Зчитування даних від користувача if err := c.ShouldBindJSON(&user); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Невірні дані користувача"}) return } // Додавання нового користувача до бази даних result, err := db.Exec("INSERT INTO users (name, email) VALUES (?, ?)", user.Name, user.Email) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Помилка додавання користувача"}) return } // Отримання ID нового користувача userID, err := result.LastInsertId() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Помилка отримання ID користувача"}) return } user.ID = int(userID) // Відправка відповіді з новим користувачем у форматі JSON c.JSON(http.StatusCreated, user) }
Цей код створює простий RESTful API для додавання користувачів та отримання списку користувачів. Запити можна виконувати за допомогою інструментів, таких як curl або Postman.