├── bin
├── cmd
│ └── api
│ ├── errors.go
│ ├── healthcheck.go
│ ├── helpers.go
│ ├── main.go
│ ├── middleware.go
│ ├── movies.go
│ ├── routers.go
│ └── server.go
├── go.mod
├── go.sum
├── internal
│ ├── data
│ │ ├── filters.go
│ │ ├── models.go
│ │ ├── movies.go
│ │ └── runtime.go
│ ├── jsonlog
│ │ └── jsonlog.go
│ └── validator
│ └── validator.go
├── Makefile
├── migrations
├── README.md
└── remote
bin
собственно скомпилированный проект, подготовленный для деплоя например на продcmd/api
код самого приложения. Код для запуска сервера, чтения http запросов и аутентификацииinternal
связанные вспомогательные пакеты для АПИ. Код взаимодействия с базой, валидация, отправка имейлов... Короче все что не специфично именно для этого приложения, всякое что можно переиспользовать где угодно еще. Отсюда будет импортироваться код вcmd/api
, НО ни кода не наоборот!migration
для SQL миграций тут ничего хитрогоremote
конфиги и скрипты для продакшенаgo.mod
собственно файл модуляMakefile
билдер сценарий
Method | URL Pattern | Handler | permission | Action |
---|---|---|---|---|
GET | /v1/healthcheck | healthcheckHandler | Выведем немного информации о проекте | |
GET | /v1/movies/:id | showMovieHandler | movies:read | Показать детали конкретного фильма |
GET | /v1/movies | listMoviesHandler | movies:read | Отобразить все фильмы с фильтрами |
POST | /v1/movies | createMovieHandler | movies:write | Создать новый фильм |
PATCH | /v1/movies/:id | editMovieHandler | movies:write | Обновить информацию о фильме |
DELETE | /v1/movies/:id | deleteMovieHandler | movies:write | Удалить фильм из базы |
POST | /v1/users | registerUserHandler | Добавить нового пользователя | |
PUT | /v1/users/activated | activateUserHandler | Пользовательская активация аккаунта | |
POST | /vq/tokens/authentication | createAuthenticationTokenHandler | Генерация stateful authentication token | |
GET | /debug | expvar.Handler() | Отображение метрик приложения |
тулинг для миграции https://github.com/golang-migrate/migrate
$ migrate -path=./migrations -database=$GL_API_DSN up
пример 1:
/v1/movies?title=godzilla&genres=scifi,drama&page=1&page_size=5&sort=-year
Ключ | Описание |
---|---|
level | Уровень лога (INFO, ERROR, FATAL) |
time | UTC время |
message | сообщение в свободной форме |
properties | дополнительные параметры например ключ\значения |
trace | стек вызова для отладки |
Сигнал | Описание | ярлык | перехват |
---|---|---|---|
SIGINT | Interrupt - прервано с клавиатуры | Ctrl+C | Да |
SIGQUIT | Quit - выход в клавиатуры | Ctrl+\ | Да |
SIGKILL | Kill - прибить процесс | Нет | |
SIGTERM | Terminate - еще один сигнал завершения | Да |
POST /v1/users
{
"name": "Test test",
"email": "test@example.com",
"password": "password"
}