Skip to content

Latest commit

 

History

History
70 lines (60 loc) · 4.77 KB

README.md

File metadata and controls

70 lines (60 loc) · 4.77 KB

REST API для базы данных клиентов

Перед запуском убедитесь, что вы установили Node.js версии 12 или выше.

Для запуска сервера перейдите в папку с репозиторием и выполните команду node index. Для остановки нажмите сочетание клавиш CTRL+C.

После запуска сервера API будет доступен по пути http://localhost:3000.

Методы API

Все методы API, требующие тела запроса, ожидают получить тело в виде JSON. Ответы всех методов также отдаются в виде JSON.

  • GET /api/clients получить список клиентов. Параметры, передаваемые в URL:
    • search={search string} поисковый запрос, при передаче метод вернёт клиентов, у которых имя, фамилия, отчество или значение одного из контактов содержат указанную подстроку
  • POST /api/clients создать нового клиента. В теле запроса нужно передать объект клиента. Тело ответа успешно обработанного запроса будет содержать объект с созданным клиентом.
  • GET /api/client/{id} получить данные клиента по его ID. Тело ответа успешно обработанного запроса будет содержать объект клиента.
  • PATCH /api/client/{id} перезаписать данные о клиенте с переданным ID. Тело ответа успешно обработанного запроса будет содержать объект с обновлённым клиентом.
  • DELETE /api/client/{id} удалить клиента с переданному ID.

Структура объекта клиента

{
  // ID клиента, заполняется сервером автоматически, после создания нельзя изменить
  id: '1234567890',
  // дата и время создания клиента, заполняется сервером автоматически, после создания нельзя изменить
  createdAt: '2021-02-03T13:07:29.554Z',
  // дата и время изменения клиента, заполняется сервером автоматически при изменении клиента
  updatedAt: '2021-02-03T13:07:29.554Z',
  // * обязательное поле, имя клиента
  name: 'Василий',
  // * обязательное поле, фамилия клиента
  surname: 'Пупкин',
  // необязательное поле, отчество клиента
  lastName: 'Васильевич',
  // контакты - необязательное поле, массив контактов
  // каждый объект в массиве (если он передан) должен содержать непустые свойства type и value
  contacts: [
    {
      type: 'Телефон',
      value: '+71234567890'
    },
    {
      type: 'Email',
      value: '[email protected]'
    },
    {
      type: 'Facebook',
      value: 'https://facebook.com/vasiliy-pupkin-the-best'
    }
  ]
}

Возможные статусы ответов

Ответ сервера может содержать один из статусов ответа:

  • 200 - запрос обработан нормально
  • 201 - запрос на создание нового элемента успешно обработан, а заголовок ответа Location содержит ссылку на GET метод получения созданного элемента
  • 404 - переданный в запросе метод не существует или запрашиваемый элемент не найден в базе данных
  • 422 - объект, переданный в теле запроса, не прошёл валидацию. Тело ответа содержит массив с описаниями ошибок валидации:
    [
      {
        field: 'Название поля объекта, в котором произошла ошибка',
        message: 'Сообщение об ошибке, которое можно показать пользователю'
      }
    ]
  • 500 - странно, но сервер сломался :(
    Обратитесь к куратору Skillbox, чтобы решить проблему