Перейти до вмісту
    Go / API для SQLite використовуючи GO

    API для SQLite використовуючи GO

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Веб-застосунок, який використовує фреймворк Gin для створення API для збереження та отримання користувацьких даних в базі даних SQLite. Для цього потрібно встановити бібліотеку Gin, використовуючи go get:

    Ось код веб-застосунку:

    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.

    Позначки:

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *