- Находясь в корне проекта, нужно выполнить команду:
make
для создания исполняемого файла apiserver.
2. После создания файла apiserver, можно посмотреть доступные команды с помощью:
```bash
./apiserver -help
-
Файл конфигурации находится в configs/apiserver.toml Для считывания его данных используется пакет https://github.com/burntsushi/toml
Пакет устанавливается командой:
go get github.com/BurntSushi/toml
Запуск сервера с настройками из данного конфигурационным файла осуществляется командой:
./apiserver -config-path configs/apiserver.toml
-
Логирование apiserver реализовано с использованием пакета Logrus: https://github.com/sirupsen/logrus Уровень логирования можно изменить в файле nfigs/apiserver.toml, в переменной: log_level. По-умолчанию (если в файле apiserver.toml не указан уровень) log_level = "debug". Возможно указание следующих уровней:
- debug
- info
- warning
- panic
- fatal
-
Роутер реализован на базе пакета https://github.com/gorilla/mux Установка:
go get -u github.com/gorilla/mux
6. Для тестов используется пакет https://github.com/stretchr/testify
Установка:
```bash
go get github.com/stretchr/testify
```
7. Для работы с БД используется пакет database-sql. Учебник здесь: http://go-database-sql.org
В качестве альтернативы можно рассмотреть пакет https://github.com/jmoiron/sqlx
8. Posgres драйвер здесь: https://github.com/lib/pq
Устанавливается командой:
```bash
go get github.com/lib/pq
-
Создаем базу данных командой:
createdb restapi_dev
Запускаем сервер:
make; ./apiserver
-
Для применения миграций используем пакет https://github.com/golang-migrate/migrate Установка под Ubuntu из 4 команд:
curl -L https://packagecloud.io/golang-migrate/migrate/gpgkey | sudo apt-key add - echo "deb https://packagecloud.io/golang-migrate/migrate/ubuntu/ $(lsb_release -sc) main" > sudo /etc/apt/sources.list.d/migrate.list sudo apt-get update sudo apt-get install -y migrate
Успешность установки монжо провреть командой:
migrate -help
Создаем миграции. Находясь в каталоге проекта выполняем команду:
migrate create -ext sql -dir migrations create_users
В результате в каталоге migrations будут созданы два пустых файла с расширением sql, вида: 20200917182500_create_users.up.sql 20200917182500_create_users.down.sql
-
Запуск миграций для dev БД: Под текущим пользователем:
migrate -path migrations -database "postgres://localhost:5432/restapi_dev?sslmode=disable" up
Под пользователем "postgres" и паролем "123456":
migrate -path migrations -database "postgres://postgres:123456@localhost:5432/restapi_dev?sslmode=disable" up
Проверяем резузльтат. Подключаемся к базе: psql -d restapi_dev Выводим списко таблиц: \dt Смотрим таблицу users: \d users; Выходим из базы данных: \q
-
Запуск миграций для тестовой БД: createdb restapi_test migrate -path migrations -database "postgres://postgres:123456@localhost:5432/restapi_test?sslmode=disable" up
-
Для хэширования паролей полезователей используем пакет bcrypt: go get golang.org/x/crypto
-
Для валидации параметров запросов используем ozzo-validation: github.com/go-ozzo/ozzo-validation
устанавиваем с помощью комманд:
go get github.com/go-ozzo/ozzo-validation