Проект представляет собой веб-приложение для управления статьями с бэкендом на Go (Gin framework) и фронтендом на HTML/CSS/JavaScript.
- RESTful API на Go с Gin framework
- Интуитивный фронтенд с адаптивным дизайном
- CRUD операции для управления статьями
- CORS поддержка для кросc-доменных запросов
- Чистая архитектура с разделением на слои
- Go 1.25+ - основной язык программирования
- Gin Framework - высокопроизводительный HTTP фреймворк
- Gin CORS - middleware для CORS
- UUID - генерация уникальных идентификаторов
- 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+
- Перейдите в директорию бэкенда:
cd rest-api-gin- Установите зависимости:
go mod download- Запустите сервер:
go run cmd/main.goСервер запустится на http://localhost:8080
- Откройте frontend/index.html в браузере:
cd frontend
# Двойной клик по index.html или используйте live-serverИли используйте Live Server в VS Code:
# Установите расширение Live Server если не установлено
# Правой кнопкой на index.html -> "Open with Live Server"| Метод | 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": "Автор"
}'- Просмотр статей - все статьи отображаются в виде карточек
- Добавление статьи - нажмите "Add New Article"
- Редактирование - нажмите "Edit" на карточке статьи
- Удаление - нажмите "Delete" на карточке статьи
- Поиск по автору - введите имя автора в поле поиска
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") // на нужный портТекущие настройки в main.go разрешают все origins. Для продакшена замените:
AllowAllOrigins: trueна:
AllowOrigins: []string{"https://yourdomain.com"}Сервер не запускается:
- Проверьте установку Go:
go version - Убедитесь что порт 8080 свободен
- Проверьте зависимости:
go mod tidy
Фронтенд не подключается к бэкенду:
- Убедитесь что бэкенд запущен на localhost:8080
- Проверьте CORS настройки
- Откройте DevTools для просмотра ошибок
Статьи не сохраняются после перезагрузки:
- Данные хранятся в памяти (для демо)