/http-server

Мои решения упражнений из курса JS: HTTP Server на hexlet https://ru.hexlet.io/courses/js-http-server

Primary LanguageJavaScript

server.js

Реализуйте создание новой записи в справочнике. Точкой входа будет маршрут POST на /users.json. Данные:

{
  "name": "<name>",
  "phone": "<phone>"
}

На стороне сервера необходимо проверять корректность данных (валидировать).

Пример запроса:

$ curl -XPOST \
>   -H 'Content-Type: application/json' \
>   --data '{"name":"Bob","phone":"912-114-23-22"}' \
>   localhost:4000/users.json
{"meta":{"location":"/users/10.json"},"data":{"name":"Bob","phone":"912-114-23-22","id":10}}

В случае успеха должен быть возвращен код ответа 201 (created) и тело:

{
  "meta": {
    "location": "/users/10.json"
  },
  "data": {
    "name": "Bob",
    "phone": "912-114-23-22",
    "id": 10
  }
}

location - адрес по которому можно получить данные этой записи id - генерируется с помощью функции nextId и проставляется в запись перед добавлением в общий список В случае ошибок валидации должен быть возвращен код ответа 422 (unprocessable entity) и тело:

{
  "errors": [
    {
      "source": "name",
      "title" :"bad format"
    },
    {
      "source": "phone",
      "title" :"can't be blank"
    }
  ]
}

Количество ошибок и их тип зависит от пришедших данных.

user.js

Реализуйте функцию для валидации данных, пришедших из формы, по следующим правилам:

Имя не может быть пустым Имя должно соответствовать шаблону ^[\w.]+$ Телефон не может быть пустым Функция должна возвращать пустой массив в случае отсутствия ошибок и массив с ошибками в случае их наличия. Каждый элемент массива – это объект следующей структуры:

{
  source: <field-name>,
  title: <message>,
}

Виды сообщений:

Если поле пустое: can't be blank Если формат не соответствует нужному: bad format

Flow

Кроме запуска тестов, обязательно попробуйте "поиграть" с написанным сервером. Для этого воспользуйтесь командой make start, которая запускает ваш сервер. После этого вы можете делать к нему запросы, используя, например, curl: curl localhost:8080. В данном уроке сервер перезапускается автоматически.