Skip to content

elvolt/job4j_chat

Repository files navigation

job4j_chat

Build Status

О проекте

Проект представляет собой REST API чата с комнатами.

Используемые технологии

  • Spring (Boot, Data JPA, Web, Security (JWT))
  • PostgreSQL, Liquibase
  • Maven
  • Jackson
  • ModelMapper

Запуск с Docker Compose

  1. Установите и запустите Docker Compose или Docker Desktop
  2. Склонируйте этот репозиторий
  3. Создайте image выполнив mvn clean install && docker build -t chat . из корня проекта
  4. Запустите контейнеры с помощью команды docker-compose up
  5. Проверьте работоспособность

REST API

для всех пользователей:

Команда Запрос Ответ
Регистрация POST https://sitename/person/sign-up
Body: {name: "Pavel", login: "pavel_123", password: "123456"}
Код состояния: 200
Авторизация POST https://sitename/login
Body: {login: "pavel_123" , password: "123456"}
Код состояния: 200 OR 403
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q..."

для авторизованного пользователя

messages

Команда Запрос Ответ
Получить все сообщения GET https://sitename/message/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q..."
Код состояния:200
Header: "Content-Type: application/json"
Body: [{"id":5,"text":"Сообщение 1","created":"2021-10-19T09:50:58.350542","personId":1,"roomId":1},...]
Получить сообщение по id GET https://sitename/message/5
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q..."
Код состояния:200
Header: "Content-Type: application/json"
Body: {"id":5,"text":"Сообщение 1","created":"2021-10-19T09:50:58.350542","personId":1,"roomId":1}
Создать новое сообщение POST https://sitename/message/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...,
"Content-Type: application/json",
Body: {"text":"Новое сообщение","personId":1,"roomId":2"
Код состояния:201
Header: "Content-Type: application/json"
Body: {"id":12,"text":"Новое сообщение","created":"2021-10-19T17:21:44.8859788","personId":1,"roomId":2}
Обновить сообщение (вариант 1) PUT https://sitename/message/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...,
"Content-Type: application/json",
Body: {"id":12, "text":"Новое сообщение","personId":1,"roomId":2"
Код состояния: 200
Обновить сообщение (вариант 2) PATCH https://sitename/message/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...,
"Content-Type: application/json",
Body: {"id":12, "text":"Новое сообщение"}
Код состояния: 200
Удалить сообщение по id DELETE https://sitename/message/5
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...
Код состояния: 200

rooms

Команда Запрос Ответ
Получить список всех комнат GET https://sitename/room/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q..."
Код состояния:200
Header: "Content-Type: application/json"
Body: [{"id":1,"name":"Room1"},...]
Получить комнату по id (со списком сообщений) GET https://sitename/room/1
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q..."
Код состояния:200
Header: "Content-Type: application/json"
Body: {"id":1,"name":"Room1", "messages":[{"id":1,"text":"Сообщение 1","created":"2021-10-19T10:05:11.019532", "person":{"id":2,"name":"user 2","login":"user2","role":{"id":1,"authority":"ROLE_USER"}},"room":1},...]}
Создать новую комнату POST https://sitename/room/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...,
"Content-Type: application/json",
Body: {"name":"Новая комната"}
Код состояния:201
Header: "Content-Type: application/json"
Body: {"id":4,"name":"Новая комната","messages":[]}
Обновить комнату (вариант 1) PUT https://sitename/room/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...,
"Content-Type: application/json",
Body: {"id":4, "name":"Обновленная комната"}
Код состояния: 200
Обновить комнату (вариант 2) PATCH https://sitename/room/
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...,
"Content-Type: application/json",
Body: {"id":4, "name":"Обновленная комната"}
Код состояния: 200
Удалить комнату по id DELETE https://sitename/room/4
Header: "Authorization: Bearer eyJ0eXAiOiJKV1Q...
Код состояния: 200

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published