java-shareit
Описание
Template repository for ShareIt project.
Языки
Java
- Dockerfile
java-shareit
Двухмодульное приложение-микросервис для обмена вещами.
Состоит из трех микросервисов - gateway, server, БД. Каждый микросервис поднимается в отдельном docker-контейнере.
Данный проект даёт возможность пользователям:
- рассказывать, какими вещами они готовы поделиться;
- находить нужную вещь;
- брать её в аренду на какое-то время;
- позволять бронировать вещь на определённые даты;
- закрывать к ней доступ на время бронирования от других желающих.
Цели проекта
В этом проекте отрабатывалось практическое применение
- микросервисной архитектуры
- контейнеризации через Docker
- работы с БД через JPA Hibernate
- транзакций
- Mockito тестирования
Стек:
- Java 11 (Core, Collections, Optional, Stream)
- Spring Boot
- Hibernate
- PostgreSQL
- Maven
- Lombok, MapStruct
- Junit5, Mockito
- Postman
- Docker
Endpoints
Users
– получить список всех пользователей[GET] /users
– получить пользователя[GET] /users/{id}id
– создать нового пользователя[POST] /users
– обновить пользователя[PATCH] /users/{id}id
- удалить пользователя[DELETE] /users/{id}id
Items
Идентификатор пользователя передается в заголовке
– получить постраничный список всех вещей пользователя (с комментариями)[GET] /items?from={from}&size={size}
– получить вещь[GET] /items/{id}
(с комментариями)id
– создать вещь и привязать к текущему пользователю[POST] /items
– обновить вещь[PUT] /items/{id}
текущего пользователяid
- удалить вещь[DELETE] /items/{id}
текущего пользователяid
– найти и вывести постранично все вещи, имеющие[GET] /items/search?text={text}&from={from}&size={size}
в имени или описании, и доступные для запросаtext
– оставить комментарий после использования вещи[POST] /items/{id}/commentid
Booking
Идентификатор пользователя передается в заголовке
– получить постранично список всех бронирований пользователя со статусом[GET] /bookings?state={state}&from={from}&size={size}state
– получить бронирование[GET] /bookings/{id}
(доступно только владельцу вещи и автору бронирования)id
– получить постранично список всех бронирований всех вещей владельца со статусом[GET] /bookings/owner?state={state}&from={from}&size={size}state
– забронировать вещь[POST] /bookings
– обновить статус бронирования вещи[PATCH] /bookings/{id}id
Request
Идентификатор пользователя передается в заголовке
– создать новый запрос вещи[POST] /requests
– получить список запросов текущего пользователя (с ответами на них)[GET] /requests
– получить запрос[GET] /requests/{id}
(с ответами на него)id
– получить постраничный список запросов, созданных другими пользователями (с ответами на них)[GET] /requests/all?from={from}&size={size}