/skb-3a

Skill-branch lesson 3A

Primary LanguageJavaScript

Задача 3A: API 80286

Краткое описание задачи

Реализовать Express.js приложение по работе с API, обработка GET запросов для получения данных

##Полное описание задачи

У вас есть объект, который описывает структуру персонального компьютера на базе процессора 80286. Необходимо реализовать геттеры внутренних подструктур и свойст этой модели.

Ответ должен быть всегда валидным JSON, например при отдаче строки, она должна быть в двойных кавычках (смотрите примеры). В случае ошибки запроса подструктуры которой нет в модели, необходимо возвращать 404 код ошибки, с телом "Not Found". Нумерация массивов начинается с 0.

Дополнительно необходимо реализовать метод /volumes, который подсчитывает, сколько места на каком диске находится, подробности можно увидеть в примерах.

Структуру модели, можно получить ТУТ https://gist.githubusercontent.com/isuvorov/ce6b8d87983611482aac89f6d7bc0037/raw/pc.json

Совет, так как данная структура может быть изменена в процессе, необходимо регулярно обновлять её в программе. Или разработать механиз, автоматического скачивания при старте веб-сервера.

Например так:

const pcUrl = 'https://gist.githubusercontent.com/isuvorov/ce6b8d87983611482aac89f6d7bc0037/raw/pc.json';

let pc = {};
fetch(pcUrl)
  .then(async (res) => {
    pc = await res.json();
  })
  .catch(err => {
    console.log('Чтото пошло не так:', err);
  });

###Примеры работы API

  • Пример 1
/
- Status 200
{
  "board": ... < JSON ИЗ СТРУКТУРЫ > ...,
  "monitor": null
}
  • Пример 2
/ram
- Status 200
{
  "vendor": "CTS",
  "volume": 1048576,
  "pins": 30
}
  • Пример 3
/ram/vendor
- Status 200
"CTS"
  • Пример 4
/ram/someField
- Status 404
Not Found
  • Пример 5
/monitor
- Status 200
null
  • Пример 4
/volumes
- Status 200

{
  "C:":"41943040B",
  "D:":"16777216B"
}

то есть все диски с одинаковой буквой, нужно суммировать