NEW! Новый релиз 12.0.0 уже доступен! Подробности в Центре заботы

java-shareit

0

Описание

Template repository for ShareIt project.

Языки

Java

  • Dockerfile
Сообщить о нарушении
README.md

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

Идентификатор пользователя передается в заголовке

X-Sharer-User-Id

  • [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}/comment
    – оставить комментарий после использования вещи
    id

Booking

Идентификатор пользователя передается в заголовке

X-Sharer-User-Id

  • [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

Идентификатор пользователя передается в заголовке

X-Sharer-User-Id

  • [POST] /requests
    – создать новый запрос вещи
  • [GET] /requests
    – получить список запросов текущего пользователя (с ответами на них)
  • [GET] /requests/{id}
    – получить запрос
    id
    (с ответами на него)
  • [GET] /requests/all?from={from}&size={size}
    – получить постраничный список запросов, созданных другими пользователями (с ответами на них)

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.