Skip to content

Prysya/bulletin-board-api

Repository files navigation

feature-sliced-banner

Version Made by: Prysya Stars * Beta Quality Code Size

Работа с api

К 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"
}

Общение (Socket.IO)

События отправляемые через socket с клиента

Событие Передаваемые даные Описание
sendMessage { receiver, text } Отправить сообщение на сервер
Поле Тип Описание
receiver string id собеседника
text string Тело сообщения

Событие Передаваемые даные Описание
getHistory receiver Получить историю сообщений
Поле Тип Описание
receiver string id собеседника

События отправляемые через socket клитенту

Событие Передаваемые даные Описание
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

About

проектная работа netology

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published