Categorygithub.com/a-schus/REST-API
module
0.0.0-20240513075810-1ab76c3b2e92
Repository: https://github.com/a-schus/rest-api.git
Documentation: pkg.go.dev

# README

REST-API

Запуск программы

Для сборки проекта и создания исполняемого файла нужно перейти в корневую директорию проекта и выполнить команду make. Исполняемый файл с именем apiserver будет автоматически создан в этой же директории.

Перед первым запуском программы в СУБД PostgreSQL нужно создать пустую базу данных с именем restapi_dev.

Приложение запускается через терминал из корневой директории проекта следующей командой:

./apiserver -ip (host:port) -n (name) -p (password) -dbip (DBServerIP)

где:

(host:port) - ip адрес и порт для прослушивания, например, localhost:8080;

(name) - имя пользователя PostgreSQL;

(password) - пароль пользователя PostgreSQL;

(DBServerIP) - ip адрес сервера PostgreSQL.

(Круглые скобки при вводе значений аргументов командной строки ставить не нужно)

Сервер запустится и будет ожидать запросы. Запросы на сервер нужно отправлять, например, из другого окна терминала посредством библиотеки CURL.

Команды, поддерживаемые сервером:

  1. /new Создает в базе данных в таблице Commands новую команду, запускает ее. Записывает в базу в таблицу Log и отправляет ответом на запрос результат выполнения этой команды.

    Данная команда представляет из себя POST запрос, в теле которого нужно передать имя создаваемой команды, ее описание и файл Bash-скрипта.

    Пример команды с использованием CURL:
    curl -X POST http://localhost:8080/new -F File=@/path/to/file.sh -F name="Name" -F desc="Description"
    где нужно соответсвенно указать хост и порт, где запущен наш сервер; путь к файлу, содержащему bash-скрипт; имя создаваемой команды; описание создаваемой команды.

  2. /cmd
    GET запрос http://localhost:8080/cmd вернет ответом список внесенных ранее в базу данных пользовательских команд.
    GET запрос http://localhost:8080/cmd?name=CommandName вернет ответом команду с именем CommandName и ее описание.

  3. /exec
    GET запрос http://localhost:8080/exec?name=CommandName выполнит пользовательскую команду с именем CommandName. Результат выполнения вернется ответом и будет записан в базу данных в таблицу Log.

  4. /execlong
    GET запрос http://localhost:8080/execlong?name=CommandName запускает в отдельной горутине выполнение долгой команды с именем CommandName и возвращает ответом присвоенный при запуске этой команде ID. Выполнение долгой команды можно прервать командой /stop.
    Результат выполнения долгой команды записывается в базу данных в таблицу Log по мере выполнения команды.

  5. /stop
    GET запрос http://localhost:8080/cmd?id=LongCommandID останавливает выполнение длинной команды, id которой равен LongCommandID (был присвоен при запуске длинной команды). Если длинная команда с таким id не выполняется, ответом отправляется соответствующее сообщение.

  6. /shutdown
    GET запрос http://localhost:8080/shutdown позволяет удаленно безопасно завершить работу сервера.

Запуск тестов

Перед первым запуском тестов необходимо создать пустую базу с именем restapi_test.

Для запуска тестов нужно перейти в корневую директорию проекта и открыть для редактирования файл Makefile.

В разделе test в строках
go test -v ./internal/app/store -args -n name -p password -dbip DBServerIP go test -v ./internal/app/cmdexec -args -n name -p password -dbip DBServerIP
нужно заменить значения аргументов командной строки на реальные:
(name) - имя пользователя PostgreSQL;
(password) - пароль пользователя PostgreSQL;
(DBServerIP) - ip адрес сервера PostgreSQL.

После этого нужно в терминале перейти в корневую директорию проекта и выполнить команду make test.

# Packages

No description provided by the author