К api можно обратиться по адресам:
www.api.prysya-news-explorer.tk
api.prysya-news-explorer.tk
84.201.147.94
Для работы необходим Docker.
Склонировать проект
$ git clone https://github.com/Prysya/bulletin-board-api.git
$ cd bulletin-board-api
Запуск локального сервера в контейнере доступного по ссылке https://localhost/
$ docker-compose up -d
Метод | Путь | Описание |
---|---|---|
POST |
/api/signup |
Создаёт пользователя с переданными в теле email , password , name |
- Пример запроса
{
"email": "[email protected]",
"password": "ad service",
"name": "Alex Kulagin",
"contactPhone": "+7 123 456 78 90"
}
- Пример ответа в случае отсутствия ошибок валидации
{
"data": {
"id": "507f1f77bcf86cd799439011",
"email": "[email protected]",
"name": "Alex Kulagin",
"contactPhone": "+7 123 456 78 90"
},
"status": "ok"
}
- Пример ответа в случае отсутствия ошибок
{
"message": "Сообщение об ошибке",
"status": "error"
}
Метод | Путь | Описание |
---|---|---|
POST |
/api/signin |
Проверяет переданные в теле почту и пароль и возвращает json и cookie |
- Пример запроса
{
"email": "[email protected]",
"password": "ad service"
}
- Пример ответа в случае отсутствия ошибок валидации
{
"data": {
"id": "507f1f77bcf86cd799439011",
"email": "[email protected]",
"name": "Alex Kulagin",
"contantPhone": "+7 123 456 78 90"
},
"status": "ok"
}
- Пример ответа в случае ошибки аутентификации
{
"message": "Неправильная почта или пароль",
"status": "error"
}
Метод | Путь | Описание |
---|---|---|
GET |
/api/advertisements |
Возвращает массив объявлений или ошибку. |
- Пример ответа
{
"data": [
{
"id": "507f1f77bcf86cd799439012",
"shortTitle": "Продам слона",
"description": "[email protected]",
"images": [
"/uploads/507f1f77bcf86cd799439011/slon_v_profil.jpg",
"/uploads/507f1f77bcf86cd799439011/slon_v_fas.jpg",
"/uploads/507f1f77bcf86cd799439011/slon_hobot.jpg"
],
"user": {
"id": "507f1f77bcf86cd799439011",
"name": "Alex Kulagin"
},
"createdAt": "2020-12-12T10:00:00.000Z"
}
],
"status": "ok"
}
Метод | Путь | Описание |
---|---|---|
GET |
/api/advertisements/:id |
Возвращает объявление по id или ошибку. |
- Пример ответа
{
"data": {
"id": "507f1f77bcf86cd799439012",
"shortTitle": "Продам слона",
"description": "[email protected]",
"images": [
"/uploads/507f1f77bcf86cd799439011/slon_v_profil.jpg",
"/uploads/507f1f77bcf86cd799439011/slon_v_fas.jpg",
"/uploads/507f1f77bcf86cd799439011/slon_hobot.jpg"
],
"user": {
"id": "507f1f77bcf86cd799439011",
"name": "Alex Kulagin"
},
"createdAt": "2020-12-12T10:00:00.000Z"
},
"status": "ok"
}
Метод | Путь | Описание |
---|---|---|
POST |
/api/advertisements |
Создать обьявление, возвращает json или ошибку |
Формат данных при отправке FormData
. Пример запроса:
Поле | Тип | Обязательное |
---|---|---|
shortTitle | string |
да |
description | string |
нет |
images | File[] |
нет |
- Пример ответа для не аутентифицированного пользователя
{
"message": "Необходима аутентификация",
"status": "error"
}
- Пример ответа для аутентифицированного пользователя
{
"data": [
{
"id": "507f1f77bcf86cd799439012",
"shortTitle": "Продам слона",
"description": "[email protected]",
"images": [
"/uploads/507f1f77bcf86cd799439011/slon_v_profil.jpg",
"/uploads/507f1f77bcf86cd799439011/slon_v_fas.jpg",
"/uploads/507f1f77bcf86cd799439011/slon_hobot.jpg"
],
"user": {
"id": "507f1f77bcf86cd799439011",
"name": "Alex Kulagin"
},
"createdAt": "2020-12-12T10:00:00.000Z"
}
],
"status": "ok"
}
Метод | Путь | Описание |
---|---|---|
DELETE |
/api/advertisements/:id |
Удалить объявление |
- Пример ответа если пользователь не аутентифицирован и пытается удалить объявление
{
"message": "Необходима аутентификация",
"status": "error"
}
- Пример ответа если пользователь аутентифицирован, но не является автором объявления
{
"message": "Недостаточно прав для выполнения операции",
"status": "error"
}
- Пример ответа для авторизованного пользователя в случае отстуствия ошибок
{
"message": "Объявление успешно удалено",
"status": "ok"
}
Событие | Передаваемые даные | Описание |
---|---|---|
sendMessage |
{ receiver, text } |
Отправить сообщение на сервер |
Поле | Тип | Описание |
---|---|---|
receiver | string |
id собеседника |
text | string |
Тело сообщения |
Событие | Передаваемые даные | Описание |
---|---|---|
getHistory |
receiver |
Получить историю сообщений |
Поле | Тип | Описание |
---|---|---|
receiver | string |
id собеседника |
Событие | Передаваемые даные | Описание |
---|---|---|
newMessage |
{ _id, author, sentAt, sentAt, text, readAt } |
Отправить сообщение клиенту |
Поле | Тип | Описание |
---|---|---|
_id | ObjectId |
id сообщения |
author | ObjectId |
id автора |
sentAt | Date |
Дата отправки сообщения |
text | string |
Текст сообщения |
readAt | Date |
Дата прочтения сообщения |
Событие | Передаваемые даные | Описание |
---|---|---|
chatHistory |
[{ _id, author, sentAt, sentAt, text, readAt }] |
Отправить массив сообщений |
В проекта настроено логгирование с помощью библиотеки winston и express-winston
Все логи сохраняются в папке ./logs
в .json
формате
Название файла | Описание |
---|---|
request.log |
Хранит информацию о всех запросах к API |
error.log |
Хранит информацию об ошибках, которые возвращало API |