Crud books - приложение для хранения книг, и любых других файлов в формате PDF.
Для запуска приложения нужно обязательно получить gofile API_KEY, данный сервис выступает в роли хранилища, отвечает за сохранение и выдачу файлов на скачивание: https://gofile.io/
Перед установкой убедитесь, что система имеет установленный docker engine
- Выполните в консоли следующие команды:
$ go mod tidy
$ docker pull mongo
- Замените следующие переменные окружения в файле "Docker-compose.yml", тег "environment":
- GOFILE_SERVICE_API_KEY=YOUR_GOFILE_SERVICE_API_KEY
- JWT_SECRET=YOUR_JWT_SECRET
- Запустите приложение при помощи команды
$ docker-compose up
Общение с приложением, происходит посредством отправки HTTP запросов следующего содержания:
GET /books
Response 200,
[
{
"Id": "643ff7ec8ddc071105dc4842",
"Title": "Book",
"Description": "Book description",
"FileToken": "FILETOKEN",
"Url": "https://gofile.io/",
"OwnerEmail": "[email protected]"
}
]
Поддерживается система фильтров и сортировки, подробнее
POST /register
{
"email": "[email protected]",
"password": "123"
}
Response 200,
{
"token": "YOUR JWT TOKEN"
}
POST /login
{
"email": "[email protected]",
"password": "123"
}
Response 200,
{
"token": "YOUR JWT TOKEN"
}
POST /files
Обязательно наличие Authorization заголовка в запросе.
Content-Type: multipart/form-data
Пример запроса:
$ curl -X POST localhost:4001
-H "Content-Type: multipart/form-data"
-d "file=your_file"
Response 200,
{
"fileToken": "5dfb4383-a312-438c-8dbf-1f3ce6fb1060"
}
GET /books
Обязательно наличие Authorization заголовка в запросе.
Response 200,
[
{
"Id": "643ff7ec8ddc071105dc4842",
"Title": "Book",
"Description": "Book description",
"FileToken": "FILETOKEN",
"Url": "https://gofile.io/",
"OwnerEmail": "[email protected]"
}
]
Поддерживается система фильтров и сортировки, подробнее
POST /books
Обязательно наличие Authorization заголовка в запросе.
Тело запроса в формате JSON
{
"fileToken": "5a70f95c-d7ff-4cd9-ae05-dcce2d68860e",
"title": "Book",
"description": ""
}
Response 200, "FILE_TOKEN"
GET /books/{:bookID}
Обязательно наличие Authorization заголовка в запросе.
Response 200, ""
{
"fileURL": "https://gofile.io/",
"title": "Book",
"description": "Book description"
}
POST /books/{:bookID}
Обязательно наличие Authorization заголовка в запросе.
Тело запроса в формате JSON
{
"fileToken": "5a70f95c-d7ff-4cd9-ae05-dcce2d68860e",
"title": "Book",
"description": ""
}
Response 200, "Book data successfully updated!"
DELETE /books/{:bookID}
Обязательно наличие Authorization заголовка в запросе.
Response 200, ""
Заголовок должен быть во всех запросах, оптравляемых к путям, требующим авторизации. Заголовок несет в себе JWT токен авторизации для идентификации пользователя.
Пример заголовка
Authorization: Bearer YOUR_JWT_TOKEN
Запросы книг GetBooks (для авторизованных и не авторизованных пользователей) позволяют использовать дополнительные параметры для фильтрации, сортировки, лимитирования и сдвига выдачи.
Пример запроса с поиском по названию книги, или части названия.
GET /books?search=НАЗВАНИЕ_КНИГИ
Добавление лимита выдачи
GET /books?limit=15
Параметр offset, для исключения из выдачи части книг (полезен при создании пагинации)
GET /books?offset=15
Пример запроса с поиском по названию, лимитом выдачей и offset параметром
GET /books?search=Сойер&limit=10&offset=10
Total Coverage: 72.5%