Документация GoWeb

Полное руководство по использованию фреймворка GoWeb для серверной разработки

Введение

Добро пожаловать в официальную документацию фреймворка GoWeb. Этот фреймворк предназначен для создания высокопроизводительных и масштабируемых серверных приложений на языке Go.

Установка

Требования

Шаги установки

  1. Скачайте установочный скрипт:
    wget https://goweb.alertweb.ru/framework_install.sh && bash framework_install.sh
  2. Следуйте инструкциям установщика для завершения установки.
  3. После установки, запустите сервер:
    goweb start
    Сервер будет запущен на http://localhost:8080

Быстрый старт

Начните быстрое создание вашего первого приложения с GoWeb.

Создание нового проекта

goweb new myapp
cd myapp

Запуск сервера

goweb run

Откройте браузер и перейдите по адресу http://localhost:8080 для просмотра вашего приложения.

Руководство пользователя

Маршрутизация

Определите маршруты для вашего приложения в файле routes.go:

func SetupRoutes(router *gin.Engine, cfg *internal.Config) {
	authGroup := router.Group("/auth")
	{
		authGroup.POST("/register", func(c *gin.Context) {
			if !cfg.Server.AllowPublicRegistration {
				c.JSON(403, gin.H{"error": "Public registration is disabled"})
				return
			}
			controllers.Register(c)
		})
		authGroup.POST("/login", controllers.Login)
	}
}
                

Контроллеры и обработчики

Создавайте обработчики для различных маршрутов:

func GetAuditLogs(c *gin.Context) {
	var logs []models.AuditLog
	if err := models.DB.Order("created_at DESC").Limit(100).Find(&logs).Error; err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve audit logs"})
		return
	}
	c.JSON(http.StatusOK, logs)
}
                

Работа с базой данных

Подключение к базе данных и выполнение запросов:

if err := models.DB.Save(&user).Error; err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to update user status"})
		return
	}
                

API Reference

Маршруты

Функции

Функция Описание Параметры Возвращаемое значение
goweb.NewRouter() Создает новый экземпляр маршрутизатора. Нет Маршрутизатор
router.GET(path, handler) Определяет маршрут для метода GET. path: строка, handler: функция обработчик Нет
goweb.JSON(w, status, data) Отправляет JSON-ответ. w: http.ResponseWriter, status: код статуса, data: данные Нет
router.Run(port) Запускает сервер на указанном порту. port: строка (например, ":8080") Нет

Примеры

Создание REST API

Пример создания простого REST API для управления пользователями:

// Создание пользователя
router.POST("/users", func(w http.ResponseWriter, r *http.Request) {
    var user User
    if err := goweb.ParseJSON(r, &user); err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    // Добавление пользователя в базу данных
    // ...
    goweb.JSON(w, http.StatusCreated, user)
})
                

Использование Middleware

Добавление middleware для авторизации:

func AuthMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		// Получаем jwtKey из контекста
		jwtKey, exists := c.Get("jwtKey")
		if !exists {
			c.JSON(http.StatusInternalServerError, gin.H{"error": "JWT key not found"})
			c.Abort()
			return
		}

		// Проверяем заголовок Authorization
		authHeader := c.GetHeader("Authorization")
		if authHeader == "" {
			c.JSON(http.StatusUnauthorized, gin.H{"error": "Authorization header is required"})
			c.Abort()
			return
		}

		parts := strings.Split(authHeader, " ")
		if len(parts) != 2 || parts[0] != "Bearer" {
			c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid authorization format"})
			c.Abort()
			return
		}

		// Проверяем токен
		token := parts[1]
		claims, err := utils.ValidateJWT(token, jwtKey.(string))
		if err != nil {
			c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"})
			c.Abort()
			return
		}

		// Добавляем userID и roleID в контекст
		c.Set("userID", claims.UserID)
		c.Set("roleID", claims.RoleID)

		// Продолжаем выполнение запроса
		c.Next()
	}
}
                

Часто задаваемые вопросы (FAQ)

GoWeb — это высокопроизводительный и масштабируемый фреймворк для серверной разработки на языке Go.

Для подключения к базе данных используйте стандартные пакеты Go для работы с базами данных, такие как database/sql и драйверы, например, go-sql-driver/mysql для MySQL.

Да, GoWeb полностью поддерживает создание REST API с использованием стандартных HTTP-методов и маршрутизации.

Поддержка

Если у вас возникли вопросы или проблемы, свяжитесь с нашей командой поддержки: