Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Первый REST API

Простой REST API на Go для управления списком задач. Приложение использует PostgreSQL в качестве базы данных, которая запускается в Docker-контейнере.


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

Чтобы запустить проект, выполните следующие шаги:

  1. Установите Docker и убедитесь, что он запущен.
  2. Запустите базу данных: В корневой папке проекта выполните команду. Она создаст и запустит контейнер с PostgreSQL в фоновом режиме.
    docker-compose up -d
  3. Установите зависимости Go: Эта команда скачает все необходимые библиотеки, указанные в go.mod.
    go mod tidy
  4. Запустите API сервер: Можно собрать исполняемый файл и запустить его:
    # Сборка
    go build -o api ./cmd/api
    
    # Запуск (для Windows)
    ./api.exe
    
    # Запуск (для Linux/macOS)
    ./api
    Сервер будет запущен и доступен по адресу http://localhost:8080.

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

Проект имеет следующую структуру, разделяя логику на несколько пакетов:

  • /cmd/api/main.go: Главный файл, точка входа в приложение. Здесь происходит настройка зависимостей (база данных, обработчики) и запуск HTTP-сервера.
  • /internal/: Основная логика приложения. Пакеты внутри internal не могут быть импортированы другими проектами.
    • /database/: Логика для взаимодействия с базой данных (подключение, CRUD-операции для задач).
    • /handlers/: Обработчики HTTP-запросов. Они принимают запросы, вызывают нужные методы из слоя базы данных и формируют JSON-ответы.
    • /models/: Go-структуры (Task, CreateTaskInput), которые описывают данные нашего приложения.
  • /sql/init.sql: SQL-скрипт, который выполняется один раз при первом запуске контейнера с базой данных. Он создает таблицу tasks и наполняет ее начальными данными.
  • docker-compose.yaml: Файл конфигурации для Docker Compose, который описывает, как запустить сервис с PostgreSQL.
  • go.mod / go.sum: Файлы для управления зависимостями в Go-проекте.

API Эндпоинты

API предоставляет следующие эндпоинты для управления задачами:

Метод URL Описание Тело запроса (JSON)
GET /tasks/ Получить список всех задач. (пусто)
GET /tasks/{id} Получить одну задачу по её id. (пусто)
POST /tasks/create Создать новую задачу. {"title": "...", "description": "...", "completed": ...}
PUT /tasks/{id} Обновить существующую задачу по её id. {"title": "...", "description": "...", "completed": ...}
DELETE /tasks/{id} Удалить задачу по её id. (пусто)

Словарь изученных терминов

Docker

Docker — платформа для создания, развертывания и управления приложениями в изолированных средах, называемых "контейнерами". Позволяет запустить наше приложение с базой данных одинаково на любой машине. ... (остальные термины из вашего файла)

Backend на Go

Модель (Model) — структура (struct) в Go, которая отражает таблицу в базе данных. Handler (Обработчик) — функция в Go, которая принимает HTTP-запрос (http.Request), обрабатывает его и возвращает HTTP-ответ (http.ResponseWriter). Database Driver (Драйвер БД) — библиотека, которая позволяет Go-приложению общаться с конкретной базой данных.

REST API (Слой взаимодействия)

API (Application Programming Interface) — набор правил и инструментов, которые позволяют одним приложениям взаимодействовать с другими. REST API (RESTful API) — архитектурный стиль для проектирования сетевых интерфейсов. Эндпоинт (Endpoint) — конкретный URL-адрес, по которому API предоставляет доступ к определенной функции. HTTP-метод (HTTP Method) — глагол, который определяет тип операции над ресурсом:

  • GET — получение данных.
  • POST — создание новой записи.
  • PUT / PATCH — обновление существующей записи (полное/частичное).
  • DELETE — удаление записи.

Маршрутизация (Routing) — процесс определения того, какой обработчик (handler) должен выполниться для конкретного URL-адреса и HTTP-метода. В этом проекте используется стандартный http.ServeMux из библиотеки Go.

Middleware (Промежуточное ПО)(новый термин) функция, которая "оборачивает" основной обработчик. Она может выполнять действия до или после него, например, логировать запросы, проверять аутентификацию или добавлять заголовки. В нашем проекте loggingMiddleware — пример такого ПО.

Запрос (Request) — то, что клиент отправляет на сервер. Ответ (Response) — то, что сервер отправляет обратно клиенту. JSON (JavaScript Object Notation) — легкий формат для обмена данными. CRUD — акроним для четырех базовых операций с данными: Create (Создать), Read (Прочитать), Update (Обновить), Delete (Удалить).

About

The first REST API created for deep understanding of the work of web applications. A project in which I am studying the API structure, containerization using Docker, and working with PostgreSQL databases.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages