Skip to content

aflek/http-rest-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

http-rest-api - Простой REST API сервер

  1. Находясь в корне проекта, нужно выполнить команду:
     make
 для создания исполняемого файла apiserver.

2. После создания файла apiserver, можно посмотреть доступные команды с помощью:
 ```bash
  ./apiserver -help
  1. Файл конфигурации находится в configs/apiserver.toml Для считывания его данных используется пакет https://github.com/burntsushi/toml

    Пакет устанавливается командой:

     go get github.com/BurntSushi/toml

    Запуск сервера с настройками из данного конфигурационным файла осуществляется командой:

     ./apiserver -config-path configs/apiserver.toml
  2. Логирование apiserver реализовано с использованием пакета Logrus: https://github.com/sirupsen/logrus Уровень логирования можно изменить в файле nfigs/apiserver.toml, в переменной: log_level. По-умолчанию (если в файле apiserver.toml не указан уровень) log_level = "debug". Возможно указание следующих уровней:

    • debug
    • info
    • warning
    • panic
    • fatal
  3. Роутер реализован на базе пакета 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 
  1. Создаем базу данных командой:

      createdb restapi_dev

    Запускаем сервер:

      make; ./apiserver
  2. Для применения миграций используем пакет 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

  3. Запуск миграций для 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

  4. Запуск миграций для тестовой БД: createdb restapi_test migrate -path migrations -database "postgres://postgres:123456@localhost:5432/restapi_test?sslmode=disable" up

  5. Для хэширования паролей полезователей используем пакет bcrypt: go get golang.org/x/crypto

  6. Для валидации параметров запросов используем ozzo-validation: github.com/go-ozzo/ozzo-validation

    устанавиваем с помощью комманд:

    go get github.com/go-ozzo/ozzo-validation

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published