Skip to content

livonica/rest-api-gin

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

rest-api-gin

Проект представляет собой веб-приложение для управления статьями с бэкендом на Go (Gin framework) и фронтендом на HTML/CSS/JavaScript.

🚀 Особенности

  • RESTful API на Go с Gin framework
  • Интуитивный фронтенд с адаптивным дизайном
  • CRUD операции для управления статьями
  • CORS поддержка для кросc-доменных запросов
  • Чистая архитектура с разделением на слои

🛠 Технологии

Backend

  • Go 1.25+ - основной язык программирования
  • Gin Framework - высокопроизводительный HTTP фреймворк
  • Gin CORS - middleware для CORS
  • UUID - генерация уникальных идентификаторов

Frontend

  • Vanilla JavaScript - нативный JS без фреймворков
  • CSS Grid & Flexbox - современная верстка
  • HTML5 - семантическая разметка
  • Fetch API - HTTP запросы

📁 Структура проекта

├── rest-api-gin/                 # Backend на Go
│   ├── cmd/
│   │   └── main.go              # Точка входа приложения
│   ├── internal/
│   │   ├── data/
│   │   │   └── articles_data.go # Моковые данные
│   │   ├── handlers/
│   │   │   └── articles.go      # Обработчики HTTP запросов
│   │   └── models/
│   │       └── article.go       # Модель данных
│   ├── go.mod
│   └── go.sum
└── frontend/                     # Frontend приложение
    ├── index.html               # Главная страница
    ├── style.css                # Стили
    └── app.js                   # Клиентская логика

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

Предварительные требования

  • Go 1.25 или выше
  • Веб-браузер с поддержкой ES6+

Запуск бэкенда

  1. Перейдите в директорию бэкенда:
cd rest-api-gin
  1. Установите зависимости:
go mod download
  1. Запустите сервер:
go run cmd/main.go

Сервер запустится на http://localhost:8080

Запуск фронтенда

  1. Откройте frontend/index.html в браузере:
cd frontend
# Двойной клик по index.html или используйте live-server

Или используйте Live Server в VS Code:

# Установите расширение Live Server если не установлено
# Правой кнопкой на index.html -> "Open with Live Server"

📚 API Endpoints

Метод Endpoint Описание
GET /articles Получить все статьи
GET /articles/:id Получить статью по ID
GET /articles/author/:author Получить статьи по автору
POST /articles Создать новую статью
PUT /articles/:id Обновить статью
DELETE /articles/:id Удалить статью

Примеры запросов

Получить все статьи:

curl http://localhost:8080/articles

Создать статью:

curl -X POST http://localhost:8080/articles \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Новая статья",
    "content": "Содержание статьи",
    "author": "Автор"
  }'

Обновить статью:

curl -X PUT http://localhost:8080/articles/1 \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Обновленный заголовок",
    "content": "Обновленное содержание",
    "author": "Автор"
  }'

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

Управление статьями через веб-интерфейс

  1. Просмотр статей - все статьи отображаются в виде карточек
  2. Добавление статьи - нажмите "Add New Article"
  3. Редактирование - нажмите "Edit" на карточке статьи
  4. Удаление - нажмите "Delete" на карточке статьи
  5. Поиск по автору - введите имя автора в поле поиска

Модель данных

type Article struct {
    ID      string `json:"id"`
    Title   string `json:"title"`
    Content   string `json:"content"`
    Author  string `json:"author"`
}

🔧 Настройка

Изменение порта сервера

В cmd/main.go измените:

router.Run("localhost:8080") // на нужный порт

Настройка CORS

Текущие настройки в main.go разрешают все origins. Для продакшена замените:

AllowAllOrigins: true

на:

AllowOrigins: []string{"https://yourdomain.com"}

🐛 Решение проблем

Сервер не запускается:

  • Проверьте установку Go: go version
  • Убедитесь что порт 8080 свободен
  • Проверьте зависимости: go mod tidy

Фронтенд не подключается к бэкенду:

  • Убедитесь что бэкенд запущен на localhost:8080
  • Проверьте CORS настройки
  • Откройте DevTools для просмотра ошибок

Статьи не сохраняются после перезагрузки:

  • Данные хранятся в памяти (для демо)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 43.8%
  • Go 24.7%
  • CSS 21.3%
  • HTML 10.2%