Набор данных книги: название, автор, описание, год, изображение обложки, ISBN, количество страниц, жанр, теги. Необходимо написать сервис, который парсит книги с книжных сайта (Google Books), а также сохраняет их в БД.
- Легкое масштабирование сервиса для парсинга любого другого книжного сайта путем расширения BaseParserService
- присутствует апи, которое позволяет получить информацию о: книгах, авторах, тегах, жанрах, а также запуск парсера (документацию об апи смотреть ниже)
[GET] /api/books/{id} - позволяет получить книгу по id
[GET] /api/books/filter/ - позволяет получить список книг по определенным фильтрам (можно использовать от 0 до N параметров)
- Поддерживаются следующие параметры:
title - Название книги. Тип: String
ISBN - ISBN книги. Тип: Long
year - год издания книги. Тип: Integer
yearLower - Искать до/после. Используется совместно с параметром year, так и без него. Тип: Boolean
pages - кол-во страниц книги. Тип: Integer
pagesLower - Искать до/после. Используется совместно с параметром pages, так и без него. Тип: Boolean
authors - искать по авторам книги (использует id авторов из БД) Тип: массив Long
genres - искать по жанрам книги (использует id жанров из БД) Тип: массив Long
tags - искать по тегам книги (использует id тегов из БД) Тип: массив Long
/api/books/filter?resultPerPage=7&offset=0&yearLower=false&year=2000&authors=3
[
{
"id": 3,
"name": "Материалы для биографии князя А. Д. Кантемира",
"desc": "С введение и примечаниями профессора В.Н. Александренко.",
"year": 2013,
"img": "http://books.google.com/books/content?id=qPb3BQAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
"pages": 355,
"ISBN": 9785446062331,
"parsedFrom": "GOOGLE_BOOKS",
"created": "2023-01-04",
"updated": "2023-01-04",
"authors": [
{
"id": 3,
"name": "Майков Л. Н."
}
],
"genres": [],
"tags": []
}
]
[POST] api/books/parse/ - позволяет спарсить книги с сайта
type - Тип парсера. Доступны: GOOGLE_BOOKS
[GET] /api/authors/all - позволяет получить всех авторов
[GET] /api/authors/{id} - позволяет получить автора по id
[GET] /api/genres/all - позволяет получить все жанры
[GET] /api/genres/{id} - позволяет получить жанр по id
[GET] /api/tags/all - позволяет получить все теги
[GET] /api/tags/{id} - позволяет получить тег по id